由于某种原因,以下 htaccess将要/boot.ini.htm
如果测试的 URL 是,则重定向到 404 页面不是如果是/boot.ini%2500.htm
。
我需要做哪些更改才能使其工作,或者这是一个错误?
Options All -Indexes
Options +FollowSymlinks
ErrorDocument 403 /site/404
ErrorDocument 404 /site/404
RewriteEngine On
RewriteRule ^(fonts)($|/) - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA]
# Ensure Authorization header is passed along
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
ServerSignature Off
php_value memory_limit 256M
我的服务器是:
服务器版本:Apache/2.4.41(Ubuntu)
服务器建立时间:2021-06-17T18:27:53
答案1
在所有情况下,我都看到默认的 Apache 404 响应
在这种情况下,请求肯定没有被 Codeigniter 处理。看起来 404 是在.htaccess
处理之前由 Apache 服务器触发的。这很可能是由 mod_security 之类的程序触发的(HTTP 响应标头中可能有一些线索)。
包含以下内容的 URL%
可能会造成安全威胁。因此,在服务器上制定一条简单的阻止这些请求的规则并不罕见。除非您以某种形式访问服务器配置,否则您不太可能采取任何措施来影响这一点。
但它已经返回了 404。404 毕竟是 404,所以对机器人来说不会有任何区别。而且真实的无论如何,用户都不应该提出这样的请求。