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

时间:2010-11-12 02:14:16

标签: apache .htaccess mod-rewrite

在Apache2上的.htaccess中,如何通过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 个答案:

答案 0 :(得分:1)

# 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]

答案 1 :(得分:0)

我搜索过,无法找到包含任意数量域名的在线解决方案。我的用例是我在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]

走向philfreo!他的回应节省了很多时间。

帕拉贡