【问题标题】:Are these two re-writes the same?这两个重写是一样的吗?
【发布时间】:2009-11-13 05:43:33
【问题描述】:
以下有何不同?忽略域名。
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www\.yourdomain\.com
RewriteRule (.*) http://www.yourdomain.com/$1 [L,R=301]
区别是“^”?
我基本上想要做的是将我的网站设置为http://yourdomain.com,并且永远不会出现 www。首先,它更短,并且对 SEO 有好处,因为我的网站不会被视为两个网站。一个带 www,一个不带。
谢谢大家
【问题讨论】:
标签:
apache
mod-rewrite
friendly-url
【解决方案1】:
不,它们不一样。
第一个说,如果主机是www.example.com,则重定向到主机example.com。
第二个说,如果主机不是www.example.com,则重定向到www.example.com。
即使您将第二个重写为以下内容(两条规则都重定向到 example.com:
RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule (.*) http://example.com/$1 [L,R=301]
如果主机不是example.com,它将重定向到example.com。如果主机只能是www.example.com 和example.com,则结果可能相同。但是如果它可以有更多的值(例如foobar.example.com),那么您的第一条规则不会重定向,而我的会重定向。