
Por alguma razão o seguinte htaccessvairedirecionar para uma página 404 se o URL testado for /boot.ini.htm
masnãose for /boot.ini%2500.htm
.
O que preciso mudar para que isso funcione ou isso é um bug?
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
Meu servidor é:
Versão do servidor: Apache/2.4.41 (Ubuntu)
Servidor construído: 2021-06-17T18:27:53
Responder1
Em todos os casos, estou vendo a resposta padrão do Apache 404
Nesse caso a solicitação certamente não está sendo processada pelo Codeigniter. Parece que o 404 está sendo acionado pelo servidor Apache, antes .htaccess
mesmo de ser processado. Provavelmente, isso é acionado por algo como mod_security (pode haver alguma pista nos cabeçalhos de resposta HTTP).
URLs que contêm %
podem representar uma ameaça à segurança. Portanto, não seria necessariamente incomum ter uma regra geral no servidor que simplesmente bloqueasse essas solicitações. A menos que você tenha acesso à configuração do servidor de alguma forma, é improvável que você possa fazer algo para influenciar isso.
Mas já está retornando um 404. E, afinal, um 404 é um 404, então não fará nenhuma diferença para os bots. Erealos usuários nunca deveriam fazer tais solicitações de qualquer maneira.