我有两个域,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之前解决

一定忘了早点测试。

07-26 09:40