2014-03-01 18 views
1

我想在兩個方向上重寫或轉發兩個URL,因爲使用的軟件不允許在被調用的URL中進行此更改。雙向重寫/轉發URL在循環中結束

被調用的URL是「https://example.com/customerarea/cart.php?a=view」,應該被轉發到https://example.com/cart/,該URL被重寫爲被調用的URL。

改寫 「車/」 到 「?customerarea/cart.php A =視圖」:

RewriteRule ^cart/$ customerarea/cart.php?a=view [QSA,L] 

此規則適用。

如果我添加以下條件和規則從「customerarea/cart.php?a = view」轉發到「cart /」,它會以連續循環結束。

RewriteCond %{REQUEST_URI} ^/customerarea/cart.php$ 
RewriteRule ^(.*)$ https://example.com/cart/ [R=301,L] 

回答

1

您需要2個規則是這樣的:

RewriteCond %{THE_REQUEST} \s/+customerarea/cart\.php\?a=view [NC] 
RewriteRule^/cart/? [R=301,L] 

RewriteRule ^cart/$ /customerarea/cart.php?a=view [QSA,L] 
+0

太好了!謝謝。你能解釋第一個條件和規則,特別是爲什麼一個空間可以如此重要? – Hativ

+0

在第一個規則空間中並不重要,但使用'%{THE_REQUEST}'很重要,它在執行重寫規則後不會更改其值。 – anubhava

+0

爲什麼第二條規則中的空間如此重要?我正是這個意思。 – Hativ