当结构页面不相同时,.htaccess旧域到新域不起作用

时间:2014-08-27 20:25:26

标签: apache .htaccess mod-rewrite

我在.htaccess上有这个:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ http://www.houstonhouseandhome.net/$1 [R=301,L]
</IfModule>

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.houseandhomeonline\.com$ [NC]
RewriteRule ^(.*)$ http://www.houstonhouseandhome.net/ [R=301,L]

主页转到新域,但旧域的子页面不会转到新域的索引。他们转到新域并查找同一页面,是否有一种方法可以将旧域页面的请求转到新的域索引? 谢谢,

1 个答案:

答案 0 :(得分:0)

出于某种原因,你有两套规则。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ http://www.houstonhouseandhome.net/$1 [R=301,L]
</IfModule>

然后

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.houseandhomeonline\.com$ [NC]
RewriteRule ^(.*)$ http://www.houstonhouseandhome.net/ [R=301,L]

你只需要第一套。 [L]标志告诉apache如果匹配则停止处理更多规则。因为它会匹配所有内容,所以第二套规则永远不会生效。

要停止尝试在新域上查找相对页面的所有内容,只需从域末尾删除$1即可。所以你的htaccess文件看起来像这样:

Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ http://www.houstonhouseandhome.net/ [R=301,L]
</IfModule>

注意

由于您正在使用301重定向,因此请确保您的浏览器在重新测试之前已清除其缓存/历史记录。浏览器不会请求它认为会回复301的网址。