.htaccess重定向为www和非www为整个网站和特定页面似乎失败

时间:2011-12-13 13:04:05

标签: .htaccess redirect

尝试在Wordpress安装上将所有流量从www.old-domain.co.uk和old-domain.co.uk重定向到www.new-domain.co.uk,但还需要将某些特定页面重定向到新的网址。我有:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Options +FollowSymLinks 

RewriteCond %{HTTP_HOST} ^(www\.)?old-domain.co.uk$ [NC]
RewriteRule ^(.*)$ http://www.new-domain.com/$1 [R=301,L]

redirect 301 /xxx/4533644418 http://www.new-domain.com/xxx/
redirect 301 /yyy/4533644413 http://www.new-domain.com/yyy/
redirect 301 /zzz/4533681089 http://www.new-domain.com/zzz/

这似乎有效,但问题是如果我输入垃圾网址 - 例如old-domain.co.uk/trash.html - 它404s但地址栏仍然显示旧域(old-domain.co.uk/trash.html)而不是像我期望的那样重定向(www.new-domain。 COM / trash.html)。

我担心这可能表明我的重定向方法有误,并会感谢任何建议。非常感谢。

1 个答案:

答案 0 :(得分:1)

垃圾URL由Wordpress部分匹配,永远不会到达您的规则以重定向到新网站。将重定向规则移至顶部,如下所示

<IfModule mod_rewrite.c>
Options +FollowSymLinks 
RewriteEngine On
RewriteBase /

#Most specific Rules should be at the top
redirect 301 /xxx/4533644418 http://www.new-domain.com/xxx/
redirect 301 /yyy/4533644413 http://www.new-domain.com/yyy/
redirect 301 /zzz/4533681089 http://www.new-domain.com/zzz/

RewriteCond %{HTTP_HOST} ^(www\.)?old-domain.co.uk$ [NC]
RewriteRule ^(.*)$ http://www.new-domain.com/$1 [R=301,L]

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
</IfModule>