为什么我的301重定向不起作用?

时间:2015-03-30 02:38:42

标签: .htaccess http-status-code-301 url-redirection

我有一个使用wordpress的博客。我更改了域名,所以我想对所有请求进行301重定向。

我的.htaccess文件:

# 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]
RewriteCond %{HTTP_HOST} ^old.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.old.com$ 
RewriteRule ^(.*)$ http://www.new.org/$1 [R=301,L]
</IfModule>


# END WordPress

为域名更改添加了新的缩进三行。

它只能将old.comwww.old.com重定向到www.new.org,但无法将old.com/XXX重定向到www.new.org/XXX

我认为原来的规则与新添加的规则相冲突。但我不知道如何改变它。

1 个答案:

答案 0 :(得分:2)

您永远不应修改# BEGIN WordPress# END WordPress之间的任何内容。这只是WordPress no-no中的一个。 WordPress将覆盖这两个条目之间的任何内容,因此将代码置于其上方或下方以确保没有任何内容被删除。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.old.com$ 
RewriteRule ^(.*)$ http://www.new.org/$1 [R=301,L]
</IfModule>

# 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