我正在尝试重定向一个已被搜索引擎索引的开发站点到新的实时站点中的一个特定类别。
开发站点URL是:
http://staging.mydomain.com.au/域后面有多个页面URL,所以我想将所有这些重定向到相同的新URL。
E.g.
http://staging.mydomain.com.au/essential_grid/
http://staging.mydomain.com.au/feed/新的url是,"/portfolio/“是我需要重定向到的旧url的地方:
http:www.mydomain.com.au/portfolio/虽然我没有收到任何错误消息,但staging.mydomain.com.au没有重定向到www.mydomain.com.au/portfolio/
这是我目前在.htaccess文件中的一个片段:
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>任何帮助都将不胜感激。
发布于 2015-07-29 00:27:25
更新:(从评论中)似乎staging.不再存在了--这就是问题所在!staging.需要存在(即。DNS必须解析),以便请求到达您的服务器以执行重定向。如果staging.不存在,那么初始请求就会简单地失败(浏览器将无法查找域,您将得到一个DNS错误)。
您需要重新创建staging子域(即使没有文件),然后实现下面的重定向。
实际上,您的RewriteRule看起来还可以--假设您希望将所有这些URL重定向到单个/portfolio URL。但是,在内部重写之前,可能应该更改顺序,使其具有重定向。RewriteEngine只需要包含一次,并且在您发布的代码中不需要RewriteBase。因此,应将其改写为:
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临时重定向可以更容易地进行测试。
https://stackoverflow.com/questions/31689047
复制相似问题