2012-01-16 274 views
0

試圖2周的htaccess的RewriteRules同時結合:htaccess非www。到www重定向並請求重寫到index.php

1)變換所有非www網址到www
2)發送的所有請求的index.php

2個作品具有以下設置生產:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [QSA] 

但與

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

這些網址的行爲與使用www網址時相同,但在與非www網址一起使用時很有趣。

E.g. http://mydomain.com/customername/admin/signin成爲
http://www.mydomain.com/index.php/admin/signin?/customername/admin/signin

雖然URL應該僅僅停留不刷新相同,參數「/客戶名稱/管理/登入」應該傳遞到index.php ...

如何任何提示我可以做到這一點?我希望mydomain.com後的URL保持不變(因爲我的解決方案目前是這樣),但添加了www。 URL的前面。

回答

3

它看起來像你只需要添加HTTP_HOST檢查之前全部重寫到index.php。

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

這重定向到www 任何URI之前已被重寫,以包羅萬象的,則:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [QSA] 

執行包羅萬象的,這恰好非www盯着301重定向到www域。

+0

謝謝!作品廣告! ;) – Fredu 2012-01-17 21:19:44