
По какой-то причине следующий htaccessволяперенаправить на страницу 404, если протестированный URL-адрес — /boot.ini.htm
нонетесли это /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 вызывается сервером Apache, .htaccess
даже до того, как он будет обработан. Это, скорее всего, вызвано чем-то вроде mod_security (в заголовках HTTP-ответа может быть какая-то подсказка).
URL-адреса, содержащие , %
могут потенциально представлять угрозу безопасности. Поэтому не обязательно будет чем-то необычным иметь на сервере общее правило, которое просто блокирует эти запросы. Если у вас нет доступа к конфигурации сервера в какой-либо форме, то вряд ли вы сможете как-то повлиять на это.
Но он уже возвращает 404. А 404 — это 404, в конце концов, так что для ботов это не будет иметь никакого значения. Инастоящийпользователи в любом случае никогда не должны делать подобных запросов.