我有一个包含
的.htacces文件RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?action=$1 [QSA,L]
它很适合我的需要。一旦我删除了像这样的文件名条件
,意外RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?action=$1 [QSA,L]
对我不理解的apache抓住了默认文件(index.html或index.php,具体取决于设置)并将其插入到动作变量中,有人可以向我解释如何工作,因为它显然不是行时采取的路线在场。
答案 0 :(得分:1)
原因是-f
检查请求文件是否存在。最重要的是,重写引擎将遍历所有规则,直到URI停止更改。这意味着第一次,请说您有请求URI:/foo/bar
^(.*)
index.php?action=foo/bar
下次,URI为/index.php
^(.*)
index.php?action=index.php
下一次,它不会改变,所以重写停止。