代码之家  ›  专栏  ›  技术社区  ›  philfreo

在.htaccess中,如何重定向非小写版本的主机名

  •  1
  • philfreo  · 技术社区  · 14 年前

    .htaccess 在Apache2上,如何通过301重定向将主机名的所有大小写变体重定向到规范的小写版本,并保持路径的其余部分不受损害。子域(或不子域)也应该这样做。

    另外,通过IP访问应该

    示例:

    • http://Example.com/foo => http://example.com/foo
    • http://A.example.com/foo => http://a.example.com/foo
    • http://A.EXample.com/foo?bar http://a.example.com/foo?bar
    • http://208.67.222.222/foo => http://208.67.222.222/foo
    2 回复  |  直到 14 年前
        1
  •  1
  •   philfreo    14 年前
    # Make sure hostname is lowercase only (or an IP address)
    RewriteCond %{HTTP_HOST} !^(.+\.)?example\.com$
    RewriteCond %{HTTP_HOST} !^[\d\.]{7,15}$
    RewriteRule ^(.*)$ ${lowercase:%{HTTP_HOST}}/$1 [R=301,L]
    
        2
  •  0
  •   Paragon    13 年前

    我已经搜索,但无法找到一个在线解决方案,包括任何数量的域。对我来说,用例是我在localhost上工作,因此第一行(带example.com)在localhost和我的域上都不工作,也不在其他人使用的代替localhost的任何名称上工作。

    因此,添加到@philfreo的答案中:(复制行,但只修改第一行)

    # Make sure hostname is lowercase only (or an IP address)
    RewriteCond %{HTTP_HOST} !^(.+\.)?(.+)?$
    RewriteCond %{HTTP_HOST} !^[\d\.]{7,15}$
    RewriteRule ^(.*)$ ${lowercase:%{HTTP_HOST}}/$1 [R=301,L]
    

    典范