1

我有一个网站 example.com。任何到 www.example.com 的流量都使用以下命令重定向到 .htaccess 文件中的 example.com:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

我从互联网上刷到的这段代码运行良好。

我现在添加了一个子域 subdom.example.com。类似地,任何到 www.subdom.example.com 的流量都应该重定向到非 www 规范版本。

以下代码不起作用:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://subdom.example.com/$1 [R=301,L]

据推测,在涉及子域的情况下,重定向的工作方式略有不同。任何人都可以分享我将如何编辑上述代码段以重定向任何 www。流量到规范的非 www。子域版本?

4

1 回答 1

2

我相信两个重定向都没有足够的 RewriteCond 条件。发生的事情是第一个是无条件重定向,因为它首先出现,所以它总是触发,第二个永远不会触发。

用这个替换你的代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

上面的代码将适用于您的两个域。

于 2013-08-05T18:27:51.803 回答