以类似于codeigniter的方式,我想捕获所有请求并将它们重写为index.php文件,该文件位于我的Web可访问文件夹的根目录中。与codeigniter上的示例不同,我不想在重写之前检查文件是否存在(因为我不想允许直接访问任何文件)。
我使用以下重写规则获得了部分成功:
RewriteRule ^(.*)$ index.php/$1/ [L]
然而,我能让它工作的唯一方法是在它之前添加一个重写条件,它会进行某种检查,以确保请求不是index.php,否则我得到500内部服务器错误。我看过错误日志,似乎是由于过多的递归。我明白,如果请求index.php它无关紧要,因为它们会打到正确的文件,但我不明白这种情况的需要,当我不知道为什么它必须在那里时,我感到很脏,包括它?
工作规则是......
RewriteCond %{REQUEST_URI} !^/index.php/
还值得一提的是,这个重写条件还有效,但我又不知道为什么需要它!
RewriteCond %{REQUEST_FILENAME} !index.php
答案 0 :(得分:1)
RewriteCond意味着,只有满足这些条件才会评估以下RewriteRule。 在您的情况下,单词“如果请求的URI 不以/index.php开头,则重新路由到index.php”。
您需要检查,否则您将在无限循环中将index.php重新路由到自身。