2013-04-16 19 views
1

進出口使用我的htaccess以下htaccess的非www到www,同時保持準確的URL

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

這工作,只是我有這樣website.com/name?query=1

輸入網址時,重寫被刪除/名稱與非www的網址

所以website.com/name?query=1將改寫爲www.website.com/?query=1

也爲Im使用Zend框架工作和具有默認/公共文件夾中的重寫使用

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

當它使鏈接看起來像這樣www.website.com//public/name?query=1

我要沒有它不寫//公衆,我不想更改網站的結構,因爲有許多指針指向/公用文件夾

如何讓RewriteRule將非www更改爲www並且不刪除「name」?

回答

2

試試這個。

# No W's to W's keeping all the URI items intact 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www\.%{HTTP_HOST}/$1 [R=301,L] 
+0

用於重寫這個http://www.website.com//public/name?itemdetails=456我需要它不是寫/公共 – user1735078

+0

我正確地回答了你的問題,你問。如果你嘗試訪問,比如說'http:// www.website.com/admin/login.php&msg = error',它將重定向到http://site.com/admin/login.php&msg = error',保持URL完整。除非你還有別的事情發生,否則我建議在重寫條件之上添加一個'RewriteBase/public /',如果所有內容都在'/ public /'中。 – Dave

+0

這是一個通用的解決方案,很好的討論。問題是,HTTP_HOST取決於服務器的配置,Apache中的ServerName,我認爲。使用%{REQUEST_URI}可能更可靠 –

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