奇怪的ModRewrite递归

时间:2011-08-16 08:15:54

标签: apache .htaccess mod-rewrite rewrite

我在本地主机上编写了这个简单的.htaccess文件进行测试:

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

现在请求http://localhost/test/x,我在Forbidden上收到错误/test/xa/xba/xa/xbba/xa/xba/xa/xbbba/xa/xba/xa/xbba/xa/xba/xa/xbbbba/...

我不明白为什么会发生这种情况,因为我不使用[N]标志或其他任何可能导致mod_rewrite递归的标志。此外,即使它确实递归,我也希望/test/xabababababababababa...不是那种近乎树状的图案。

谁能告诉我发生了什么?

1 个答案:

答案 0 :(得分:1)

因为这就是mod_rewrite的工作方式 - 在重写发生之后它会进入下一次迭代(确切地说 - 它取决于重写标志和其他“时刻”)。

如果你没有以正确的方式构建你的规则,你将有重写循环,Apache必须在某些时候强行停止。

有用的链接:RewriteRule Last [L] flag not working?