【发布时间】:2010-11-12 04:29:41
【问题描述】:
我有两个域,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),没有任何区别。
谢谢!
【问题讨论】:
标签: .htaccess mod-rewrite dns redirect