2012-06-22 78 views
0

我有一個htaccess的,看起來像這樣:.htaccess重定向丟失查詢字符串?

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
RewriteRule ^([^.]+)/?$ index.php?query=$1 [L] 

我希望這將使所有非www網址重定向到www的版本,以及給予在結束一個整潔的查詢字符串。因此,這些網址:

http://site.com/index.php?query=test/page 
http://www.site.com/index.php?query=another/test/page 

兩個都會重定向到:

http://www.site.com/test/page 
http://www.site.com/another/test/page 

分別。

然而,一切都只是重定向到:

http://www.site.com 

我在做什麼錯?

回答

0

RewriteRule忽略url中的查詢字符串。所以,你需要改變你的規則如下:

Options +FollowSymLinks 
RewriteEngine on 

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

RewriteCond %{HTTP_HOST} ^www\. 
RewriteRule ^/index[.]php$ /%{QUERY_STRING} [L] 

請務必包括第一規則QSA標誌

相關問題