【问题标题】: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.comexample.com,则结果可能相同。但是如果它可以有更多的值(例如foobar.example.com),那么您的第一条规则不会重定向,而我的重定向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多