我在[.htaccess]文件中添加了以下规则:
RewriteRule ^welcome/?$ index.php [NC,L]
RewriteRule ^bye/?$ bye.php [NC,L]
RewriteRule ^.*/?$ error.html [NC,L]
当我输入http://localhost/welcome时,它会进入错误页面而不是索引页面。
但是当我删除.htaccess文件中的最后一条规则时,它会显示索引页面。当与第一条规则匹配时,它不应该停止。
我想通过输入网址栏来阻止用户直接访问索引页。
出了什么问题?
答案 0 :(得分:0)
您需要在单独的规则中检查REDIRECT_STATUS
,以验证规则是否已运行一次。
RewriteEngine On
# check if rules have run once
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule ^ - [L]
# block direct access to index.php
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^ - [F]
# your default rules
RewriteRule ^welcome/?$ index.php [NC,L]
RewriteRule ^bye/?$ bye.php [NC,L]
RewriteRule .* error.html [L]