Я не могу заставить пользовательский документ об ошибке работать с 400 неверным запросом. Это сервер CentOS LAMP.
ErrorDocument 400 /badrdoc.html
Я пробовал использовать это в:
Ни один из них не работает. Apache по умолчанию обслуживает страницу 400 неверных запросов.
Может ли кто-нибудь пролить свет на это?
Изменить: забыл упомянуть, я перезапустил Apache после изменений.
У меня были некоторые проблемы с тем, чтобы заставить работать пользовательский документ об ошибке 400. Я добавил это на верхний уровень моего Apache conf:
ErrorDocument 404 /404.html
ErrorDocument 400 /400.html
И создал два документа об ошибках в DocumentRoot
. Сначала я протестировал 404 с:
echo -en "GET /foo HTTP/1.0\n\n" | nc 127.0.0.1 80
Это вернуло мой обычай 404.
Затем 400 (обратите внимание, что начальная косая черта отсутствует):
echo -en "GET foo HTTP/1.0\n\n" | nc 127.0.0.1 80
Ответом был Apache 400 по умолчанию.
Мне удалось вернуть свой собственный 400, поговорив HTTP с виртуальным хостом HTTPS:
echo -en "GET / HTTP/1.0\n\n" | nc 127.0.0.1 443
Вы все равно получите тот же кастомный 400 обратно, даже если сделаете неверный запрос:
echo -en "GET foo HTTP/1.0\n\n" | nc 127.0.0.1 443
К сожалению для вашего тестирования, разговор SSL с vhost, отличным от ssl, не приводит ни к какому типу 400. Так и не придумал как получить кастом ErrorDocuemnt 400
для отправки обратно на порт 80.
P.S. Я помню, как где-то читал, что ErrorDocument 400
не будет работать внутри .htaccess
файл, так как может быть невозможно даже определить правильный DocumentRoot
если запрос неверен. То же самое, вероятно, относится к виртуальным хостам на основе имен.