2012-07-30 68 views
1

我有一個簡單的htaccess重定向來將訪問者從website.com/promotions發送到website.com/go/promotions。如果我使用下面的代碼我得到一個重定向循環錯誤:.htaccess重定向循環和正則表達式問題

RewriteEngine on 
RewriteCond %{REQUEST_URL} !^go$ 
RewriteRule promotion/index.html go/promotion/index.html [R,L,NC] 

的的RewriteCond應該由如果請求網址中包含「走出去」,但它似乎並沒有被工作沒有進行重定向,以防止循環。

此外,我試圖設置一個正則表達式,以便promotion/anypage.html將被重定向到/ promotion/anypage.html。我試着下面的代碼,但它不會匹配任何東西:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^go$ 
RewriteRule ^promotion/(.*)$ go/promotion/$1 [R,L,NC] 

沒有任何人有一個線索,爲什麼這些塊的任何工作不正常?

乾杯

回答

2

%{REQUEST_URL}不是一個變種可以對陣,你」可能考慮%{REQUEST_URI},但它以一個前導斜槓開頭,所以^go永遠不會匹配任何東西。

你只需要一個單一的規則:

RewriteEngine On 
RewriteRule ^/?promotion/(.*)$ /go/promotion/$1 [R,L] 

或者你可以使用mod_alias中:

Redirect /promotion/ /go/promotion/ 
+0

非常好。就是這樣。看起來我接近我的第二條規則,在報告開始時我只是錯過了正斜槓。 – khendar 2012-07-30 23:45:25

1

你檢查,如果整個URL僅僅是「走出去」在它自己的,它不是:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/?go/ 
RewriteRule promotion/index.html go/promotion/index.html [R,L,NC] 
+0

這並不妨礙循環 – 2012-07-30 08:39:14

+0

是的,我仍然是一個得到一個重定向循環錯誤。 – khendar 2012-07-30 23:47:46