2010-11-12 11 views
1

在Apache2的.htaccess上,如何通過301重定向將主機名的所有大小寫變化重定向到規範小寫版本,並保持路徑的其餘部分不受傷害。子域名(或不是)也應該這樣做。在.htaccess中,如何重定向非主機名的非小寫版本

此外,通過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

回答

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] 
+0

請記住,每個值得一提的搜索引擎都會爲您做這個規範化處理。除非您對此有嚴重問題,否則通常不會有必要。 – 2010-11-12 02:27:26

0

我搜索了並且無法找到包含任意數量域的在線解決方案。對我來說,用例是我在localhost上工作,所以第一行(使用example.com)在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!他的迴應節省了很多時間。

Paragon