我有两个域,cshen.ca和cshen.net,都指向同一个地方。
我正在尝试使用mod_rewrite完成以下任务:
cshen.net 301重定向到cshen.ca
www.cshen.net或www.cshen.ca都被重定向到cshen.ca
重定向后保留域之后的路径,例如www.cshen.net/foo/bar/将被重定向到cshen.ca/foo/bar/
我尝试了各种规则,但似乎无法使其正常工作。
RewriteCond %{HTTP_HOST} ^cshen\.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://cshen.ca/$1 [R=301,L]
这完成了前两个规则,但是将所有内容重定向回主页,并且不保留URL的其余部分。
RewriteCond %{HTTP_HOST} ^cshen\.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^/(.*)$ http://cshen.ca/$1 [R=301,L]
进行少量更改并在RewriteRule中添加斜杠“ /”可保留其余URL,但仅www.cshen.ca被重定向。 cshen.net和www.cshen.net均未重定向到任何地方。
我也尝试过Apache's guide并使用以下代码:
RewriteCond %{HTTP_HOST} !^cshen\.ca [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://cshen.ca/$1 [L,R]
我以为这会行得通,因为它应该重定向不是cshen.ca的任何URL,但是,就像第二段代码一样,它对cshen.net或www.cshen.net都没有作用。
我几乎没有其他尝试的想法。如果有人可以帮忙,我将不胜感激!
附录:万一重要,我使用的是WordPress的漂亮URL,其重写规则为:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我试过将规则放在WordPress规则之前和之后(当然,在我将规则之前添加RewriteEngine On之前放在规则中)没有任何区别。
谢谢!
最佳答案
不知道如何编辑,通过将apache中的代码放在WP之前解决
一定忘了早点测试。