2011-08-16 124 views
0

我寫了這個簡單的.htaccess文件在我的本地測試:奇怪ModRewrite遞歸

RewriteEngine on 
RewriteRule ^(.+)$ $1a  
RewriteRule ^(.+)$ $1b 

現在請求http://localhost/test/x,我得到/test/xa/xba/xa/xbba/xa/xba/xa/xbbba/xa/xba/xa/xbba/xa/xba/xa/xbbbba/...

錯誤Forbidden我不明白爲什麼會這樣,因爲我不使用[N]標誌或其他任何應該導致mod_rewrite遞歸的標誌。此外,即使它做了遞歸,我期望/test/xabababababababababa...不是上面的樹幾乎看起來模式。

誰能告訴我發生了什麼事?

+0

也奇怪:添加'[L]'第一行給出了一個內部服務器錯誤,而將其添加到第二行改變不了什麼。 –

回答

1

因爲這就是mod_rewrite的工作方式 - 重寫發生後,它會進入下一次迭代(何時完全取決於重寫標誌和其他「時刻」)。

如果你沒有以正確的方式建立你的規則,你將重寫循環,Apache必須在某個時刻強行停止。

有用的鏈接閱讀:RewriteRule Last [L] flag not working?