我有一个使用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.com
和www.old.com
重定向到www.new.org
,但无法将old.com/XXX
重定向到www.new.org/XXX
。
我认为原来的规则与新添加的规则相冲突。但我不知道如何改变它。
答案 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