【问题标题】:mod_redirect: non www to www.domain.name & www. domain name to (no hardcoding)mod重定向:非www到www.domain.name和www。域名到(无硬编码)
【发布时间】:2012-10-10 21:42:14
【问题描述】:

我期待进行以下重定向:

  1. 非 www 域到 www.domain.com 例如:
    • cnn.com 到 www.cnn.com
  2. www 子域到非 www 子域例如:
    • www.test.cnn.com 到 test.cnn.com
    • www.test.cool.cnn.com 到 test.cool.cnn.com

我希望两者都在同一个 htaccess 文件上,而不对域名进行硬编码。

【问题讨论】:

    标签: apache mod-rewrite redirect


    【解决方案1】:

    向任何主机添加 www:

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

    从子域中删除 www:

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

    【讨论】:

    • 应该是RewriteCond %{HTTP_HOST} ^www\.(.*)\.([^.]+)\.([^.]+)$ [NC],因为结尾部分没有任何特殊之处。事实上,作为后缀的.local 曾经而且可能仍然在某些地方使用,并且不会匹配 {2,4}。
    猜你喜欢
    • 1970-01-01
    • 2014-03-25
    • 2015-07-09
    • 2020-12-31
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多