我有这条规则,将所有请求重定向到.
index.php
,并且工作正常:
# Redirect all page requests to content handler
RewriteRule ^([^.]*)$ index.php [L]
现在,我还想禁止原始网址中包含.php
的任何请求。当我添加这样的另一个规则(在第一个规则之后)时,第一个规则会中断:
# Disallow access to PHP files
RewriteRule \.php 404.php [L]
我认为将[L]
添加到第一条规则会阻止执行第二条规则,但它似乎没有效果:第一条规则的输出(即index.php
)与第二条规则匹配规则和所有请求最终都在404.php
。我在这里做错了什么?
答案 0 :(得分:2)
[L]
表示不再为此请求处理规则,但在处理index.php时会再次触发整个路径。尝试添加新规则,只有当请求的页面不是index.php时才会触发404规则,如下所示:
# Disallow access to PHP files
RewriteCond %{REQUEST_FILENAME} !=index.php
RewriteRule \.php 404.php [L]