【问题标题】:mod rewrite from .domain to www.domain htaccessmod从.domain重写为www.domain htaccess
【发布时间】:2014-01-13 17:02:35
【问题描述】:

如何扩展 htaccess 文件以执行 .domain.com -> www.domain.com?

  <IfModule mod_rewrite.c>
        RewriteEngine On
        #catch potential subpages first
        RewriteRule ^([a-z-]+)/([0-9a-z-]+)/?$ index.php?page=$1&subpage=$2 [L,NC,QSA]
        #catch parent page without subpage
        RewriteRule ^([a-z-]+)/?$ index.php?page=$1 [L,NC,QSA]
  </IfModule>

是否可以不定义 domain.com?并且有任何域的通用规则?

通常我会这样做:

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

但是我如何将它与上面的指令结合起来呢?

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    有这样的规则:

    RewriteEngine On
    
    # anything.com to www.anything.com
    RewriteCond %{HTTP_HOST} ^[^.]+(\.[^.]+)?$ [NC]
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301,NE]
    
    #catch potential subpages first
    RewriteRule ^([a-z-]+)/([0-9a-z-]+)/?$ index.php?page=$1&subpage=$2 [L,NC,QSA]
    
    #catch parent page without subpage
    RewriteRule ^([a-z-]+)/?$ index.php?page=$1 [L,NC,QSA]
    

    PS:如果您还想为子域添加www,请使用此规则:

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

    【讨论】:

    • 经过编辑使其也可以在 localhost 上运行,是的,没有更改任何其他规则。
    猜你喜欢
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2013-09-17
    相关资源
    最近更新 更多