2011-06-29 46 views
0

對具有查詢字符串的/的任何請求都會導致404被觸發。我發現如果我在查詢字符串之前添加/shop/,它將在內部重定向,並且不會觸發404。重定向到目錄,保留查詢字符串

我需要一個通用的mod_rewrite規則,將採取一個URL的形式:

http://www.example.com/?foo=bar 

,重定向到:

http://www.example.com/shop/?foo=bar 

在查詢字符串(可以是任何東西)被保留。

+0

據我瞭解,你想有隻1重寫(不定向),所以當'/?富=請求bar'然後它實際上是'是被執行/店/?富= bar'(URL保持不變),對吧? – LazyOne

+0

當任何*查詢字符串存在時,主頁'/'出於某種原因返回404,但'/ shop /'可以正常工作。重寫或重定向應該適用於任何數量的查詢參數和任何參數名稱,而不僅僅是「foo」。 – Jazzerus

回答

0

這將重定向(URL會改變)全部點擊進入ROOT(例如http://www.example.com/),其具有查詢字符串爲http://www.example.com/shop/

RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} !^$ 
RewriteRule ^$ http://www.example.com/shop/ [QSA,R,L] 

這將改寫內部(URL會留在瀏覽器相同)全部點擊進入ROOT(例如http://www.example.com/),其具有查詢字符串爲http://www.example.com/shop/

RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} !^$ 
RewriteRule ^$ /shop/ [QSA,L] 
+0

我應該提到該網站是建立在Miva Merchant上的,並且/ shop /會自動重定向到/在內部。 RewriteRule的添加會導致無限重定向循環。我需要一個僅適用於帶查詢字符串的URL的規則,因爲查詢字符串在內部重定向到/時會被剝離。 – Jazzerus

+0

@Jazzerus還有什麼其他的**「小細微的細微差別」**你有嗎?這已經改變了所有的**,並且不知道你現有的重定向是如何完成的(Miva Merchant),我所能想到的任何東西都只是一種「瘋狂猜測」。您必須查看您現有的重寫規則並找出其無效的原因。 – LazyOne

+0

我想也許我的問題並不清楚。我需要一個僅在存在查詢字符串時才起作用的解決方案。如果用戶轉到example.com而沒有查詢字符串,則不應將其重定向到example.com/shop。 – Jazzerus

相關問題