我有两个域名,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以外的任何网址,但是,就像第二段代码一样,它没有任何作用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之前解决
一定是忘记了早些时候测试这个。
关于.htaccess mod_rewrite 域之间的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1151328/