我在本地主机上编写了这个简单的.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...
不是那种近乎树状的图案。
谁能告诉我发生了什么?
答案 0 :(得分:1)
因为这就是mod_rewrite的工作方式 - 在重写发生之后它会进入下一次迭代(确切地说 - 它取决于重写标志和其他“时刻”)。
如果你没有以正确的方式构建你的规则,你将有重写循环,Apache必须在某些时候强行停止。