2013-05-03 59 views
0

我有一個.htaccess文件,並當過我型www.example.com/demo/index.php它不斷重定向我在一個循環中。至於爲什麼會這樣,我真的很困惑。mod_rewrite的改變地址欄無故

# Do not remove this line, otherwise mod_rewrite rules will stop working 

RewriteBase/

Options +Multiviews 

AddHandler application/x-httpd-php .css 

AddHandler application/x-httpd-php .js 

RewriteEngine On 


#NC not case sensitive 
#L last rule don't process futher 
#R 301 changes the url to what you want 

RewriteRule ^demo(.*)$ finished$1 [NC] 

RewriteCond %{REQUEST_URI} ^/finished/.*$ 
RewriteRule ^finished/(.*)$ demo/$1 [NC,R=301,L] 
+0

你需要有'在Multiviews '?這可能是內容協商無意中在某處導致重定向的原因。 – 2013-05-03 04:53:39

+0

我不必但沒想到可能會導致問題。認爲它只是擺脫了文件擴展名,但我可以嘗試 – 2013-05-03 05:02:11

+0

改變它仍然有同樣的問題:( – 2013-05-03 05:03:50

回答

1

我可以看到重寫循環發生,如果你正在做的:

http://mydomain/demo/rewrite.cgi 

,因爲這將被第一條規則得到重寫

http://mydomain/finished/rewrite.cgi 

然後匹配重寫條件第二重寫規則並得到改寫爲:

http://mydomain/demo/rewrite.cgi 

並開始循環。

有可能這裏有兩個補丁或者a)添加L標誌第一重寫規則 (使得最後重寫會發生)或b)如果您的演示的rewrite後面沒有斜槓我會作出這樣的隱:

RewriteRule ^demo([^/]+)$ finished$1 [NC] 

如果這不是原因,它開啓重寫規則日誌記錄,並在 看起來正在做什麼,以創建循環中的另一種選擇:

RewriteLog /path/to/rewrite.log 
RewriteLogLevel 3