Я редактировал свой .htaccess
в следующий файл:
ErrorDocument 404 /index.php?page=page-not-found
ErrorDocument 400 /index.php?page=bad-request
Теперь ошибка 404 перенаправляется правильно, но если я введу адрес вроде http://example.com/%22%%5E$%%5E&%C2%A3&
сервер не перенаправляет ошибку 400, но отображает сообщение apache по умолчанию. Что я делаю не так?
Цитата из Документация Apache:
Хотя большинство сообщений об ошибках можно переопределить, существуют определенные обстоятельства, при которых внутренние сообщения используются независимо от настройки ErrorDocument. В частности, если обнаружен искаженный запрос, нормальная обработка запроса будет немедленно остановлена, и будет возвращено сообщение о внутренней ошибке. Это необходимо для защиты от проблем безопасности, вызванных ошибочными запросами.
Итак, если вам нужна ошибка перенаправления 400, раскомментируйте ErrorDocument
директива в httpd.conf
Файл конфигурации Apache следующим образом:
# Some examples:
#ErrorDocument 500 http://foo.example.com/cgi-bin/tester
ErrorDocument 400 /cgi-bin/bad_request.pl
#ErrorDocument 401 /subscription_info.html
#ErrorDocument 403 "Sorry can't allow you access today"
и перезапустите сервер Apache.