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

why my 301 redirect is not work?

我有一个使用 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/ [R=301,L]
</IfModule>


# END WordPress

缩进三行是为域名变更新增的

只能将old.comwww.old.com重定向到www.new.org,不能将old.com/XXX重定向到www.new.org/XXX

我认为原来的规则与新添加的规则冲突。但是不知道怎么改。

您永远不应修改 # BEGIN WordPress# END WordPress 之间的任何内容。这只是 WordPress 禁忌之一。 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/ [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