2013-03-03 17 views
0

以下是爲我工作(去除WWW),但我注意到,就開始亂了一個子域,因爲它是不夠具體正則表達式與子域工作,並去除WWW

RewriteCond %{HTTP_HOST} !^site.com$ [NC] 
RewriteRule ^(.*)$ http://site.com/$1 [R,L] 

所以我添加

RewriteCond %{HTTP_HOST} !^hotels$ [NC] 
    RewriteRule ^(.*)$ http://hotels.site.com/$1 [R,L] 

顯然是不正確的(這第二部分shoudl根本不需要) - 然後我明白,我需要在第一部分中的url中跳過點(句點),但也使它更具體,現在它不需要匹配www.hotels.site.com - 在這種情況下,我仍然想刪除www,但我想重定向到子域。所以總之我總是想刪除www並保持子域的工作。

RewriteCond %{HTTP_HOST} !^www\.site\.com$ [NC] 

所以這最後一行是非常具體的,應該只匹配www.site.com

那麼,爲什麼不呢?

回答

0

^www\.site\.com$將永遠只匹配www.site.com

^hotels$只會匹配hotels - 也許你的意思是^hotels,它匹配任何以hotels開頭的東西。

我覺得你的要求難以理解,但如果你只是想刪除www你可以使用

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

我想總是需要$信號的要匹配什麼樣的結尾。我試過你的解決方案,但www並沒有被剝離,儘管它看起來應該可以工作。匹配「www。」然後重定向到%1,這是www之後的任何內容。 – landed 2013-03-08 08:44:28

+0

@landed。嘗試將'RewriteRule'改爲'RewriteRule ^。* $ http://%1 $ 0 [R,L]',或者如果這樣做不行,請嘗試'RewriteCond%{HTTP_HOST}^www \。(。+) [NC] RewriteRule^http://%1%{REQUEST_URI} [L,R]'。不幸的是,我目前無法測試。 – MikeM 2013-03-08 11:17:33