这两个重写是一样的吗?

时间:2009-11-12 20:34:35

标签: apache mod-rewrite friendly-url

以下有何不同?忽略域名。

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而另一个没有。

全部谢谢

1 个答案:

答案 0 :(得分:1)

不,他们不一样。

第一个说,如果主持人是example.com,则会重定向到主持人www.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.comexample.com,结果可能会相同。但是,如果它可以包含更多值(例如foobar.example.com),那么当我的 重定向时,您的第一个规则将不会重定向。