【问题标题】:redirecting only non-www to www - ignoring all subdomains仅将非 www 重定向到 www - 忽略所有子域
【发布时间】:2013-03-05 07:24:50
【问题描述】:

我很惊讶谷歌搜索并没有为我的问题返回任何有用的解决方案。

我只想将非 www 请求重定向到 www.. 但如果它是子域,我希望它忽略它。

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

这会将非 www 重定向到 www,但如果我输入子域,它会附加一个“www”。在它面前..我需要停止这种行为。

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    this answer should do it

    RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    还要考虑 HTTPS:

    RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
    RewriteCond %{HTTPS}s ^on(s)|
    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    【讨论】:

    • 我尝试了您的代码,但它似乎仍在将子域重定向到“www.subdomain.example.com”
    • 创建了一个循环并不断附加 www。无限次
    • 添加的链接应该可以解决您的问题(未经测试)它的后期 xD
    • 我认为如果您对域进行硬编码,我的第二个选项会起作用(请参阅答案)
    • 有效的是接受答案下方的答案..您应该将其发布在这里
    【解决方案2】:

    我已经做了同样的事情,这对我有用

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      相关资源
      最近更新 更多