自升级到Apache 2.4以来,我遇到了一个奇怪的问题。看来RewriteRule覆盖了.htaccess文件deny all命令的各个部分。
Require all denied
RewriteEngine on
RewriteRule ^index\.php\/(.*) /$1 [R=301,QSA,L]
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
会发生什么情况,任何单独的文件(例如/robots.txt或/favicon.ico)都将收到403错误。但是,当尝试呈现网站的一部分(例如/ site / login)时,它实际上允许浏览器通过并且服务器执行index.php并呈现登录表单(尽管由于所有这些资产都是403,所以都没有JS或CSS)
我不是专家,但是“要求全部拒绝”部分似乎应该结束执行。为什么仍允许执行index.php?