首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.htaccess从sub.domain.com.au*重定向到www.domain.com.au/URL

.htaccess从sub.domain.com.au*重定向到www.domain.com.au/URL
EN

Stack Overflow用户
提问于 2015-07-28 23:54:16
回答 1查看 416关注 0票数 1

我正在尝试重定向一个已被搜索引擎索引的开发站点到新的实时站点中的一个特定类别。

开发站点URL是:

代码语言:javascript
复制
http://staging.mydomain.com.au/

域后面有多个页面URL,所以我想将所有这些重定向到相同的新URL。

代码语言:javascript
复制
E.g.
http://staging.mydomain.com.au/essential_grid/
http://staging.mydomain.com.au/feed/

新的url是,"/portfolio/“是我需要重定向到的旧url的地方:

代码语言:javascript
复制
http:www.mydomain.com.au/portfolio/

虽然我没有收到任何错误消息,但staging.mydomain.com.au没有重定向到www.mydomain.com.au/portfolio/

这是我目前在.htaccess文件中的一个片段:

代码语言:javascript
复制
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^staging.mydomain.com.au$
RewriteRule ^(.*)$ http://www.mydomain.com.au/portfolio [R=301,L]
</IfModule>

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2015-07-29 00:27:25

更新:(从评论中)似乎staging.不再存在了--这就是问题所在!staging.需要存在(即。DNS必须解析),以便请求到达您的服务器以执行重定向。如果staging.不存在,那么初始请求就会简单地失败(浏览器将无法查找域,您将得到一个DNS错误)。

您需要重新创建staging子域(即使没有文件),然后实现下面的重定向。

实际上,您的RewriteRule看起来还可以--假设您希望将所有这些URL重定向到单个/portfolio URL。但是,在内部重写之前,可能应该更改顺序,使其具有重定向。RewriteEngine只需要包含一次,并且在您发布的代码中不需要RewriteBase。因此,应将其改写为:

代码语言:javascript
复制
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^staging\.mydomain\.com\.au$
RewriteRule ^ http://www.mydomain.com.au/portfolio [R=301,L]

^(.*)$简化为简单的^,因为在替换中不需要捕获反向引用的URL。

我还删除了另一个RewriteRule,因为它似乎没有做任何事情?

还请注意,301重定向是由浏览器缓存的,因此请确保在尝试失败时清除浏览器缓存。因此,使用302临时重定向可以更容易地进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31689047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档