如果我使用绝对路径,重写器不起作用

时间:2017-10-03 00:59:03

标签: .htaccess mod-rewrite

此:

rewriteengine on
rewriterule test /index.php

.works。这样:

rewriteengine on
rewriterule test index.php

.works。这样:

rewriteengine on
rewriterule index.php index.php

.works。

但是这个:

rewriteengine on
rewriterule index.php /index.php

。给我500个内部服务器错误。

index.php index.php如何运作,但index.php /index.php没有?

造成此错误的原因是什么?

1 个答案:

答案 0 :(得分:1)

因为您要求为什么,我会分享一些见解。

对于此rewriterule index.php index.php指令,Apache认识到原点和目标是相同的initial URL equal rewritten URL,因此[IGNORING REWRITE]

第二个不是100%相同,所以Apache尝试执行它。但是因为斜杠没有产生任何差异,我们将index.php重写为/index.php,并且在每次重写之后,Apache再次检查新目标的所有重写指令,现在我们最终进入无限重写循环。

只需在配置中设置日志级别LogLevel alert rewrite:trace3,您就可以自己查看。