Назад | Перейти на главную страницу

Как заставить Apache возвращать пользовательскую страницу при ошибке 400 с искаженными заголовками хоста?

Я думаю, что то, о чем я просил, было немного сложно понять, поэтому я пытаюсь сделать это проще ...

Мне нужно, чтобы на моем сервере была настраиваемая страница с ошибкой 400, когда он получает запрос с искаженным заголовком хоста.

В идеале я хочу ErrorDocument 400 \somepage.php

Я могу сгенерировать 400 ошибок, посетив такую ​​страницу, как http:\\myserver\bla%bla, и это отлично подойдет для моего сценария. Точно так же я могу изменить \somepage.php раздел к Test text и Apache вернет этот текст.

Однако, если ошибка 400 вызвана неверным форматом заголовка хоста, он будет работать с текстом, но не с веб-страницей.

Может ли кто-нибудь пролить свет на это и дать рабочий раствор, прежде чем я потеряю все волосы ?! (уже немало потерял из-за этого!).

После многих попыток оказалось, что это невозможно.

Я открыл заявку на отслеживание ошибок HTTPD - который был закрыт с помощью Won't Fix.

Они говорят, что:

Пометка как wontfix, когда запрос имеет неправильный формат, сервер не желает выполнять дальнейшую обработку для обслуживания настраиваемого документа с ошибкой из файловой системы (ваша страница с ошибкой должна была сообщить вам, что обнаружен рекурсивный 400)

На мой взгляд, это не очень хорошо - я понимаю, что это действие по умолчанию, но почему бы не позволить пользователю использовать другую страницу, если они того пожелают.

Откровенно говоря, это должно работать именно так, но если кто-нибудь придет к ответу, который включает в себя какой-либо другой метод (прокси, переписывание / подобное), я буду счастлив взглянуть на него и, возможно, поставить ему оценку.


редактировать

В конце концов, я обнаружил, что это можно сделать с помощью Nginx и специальной директивы для перенаправления 400 страниц. Я не понимаю, почему разработчики Apache не признают этого, но Nginx справился с этим нормально.