Я пытаюсь заставить сервер apache выдавать настраиваемую ошибку 404 для недопустимых поддоменов. Ниже приводится соответствующая часть конфигурации httpd:
Alias /err/ "/var/www/error/"
ErrorDocument 404 /err/HTTP_NOT_FOUND.html.var
<VirtualHost *:80> # the default virtual host
ServerName site_not_found
Redirect 404 /
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias ??.example.com
</VirtualHost>
Вместо этого я получаю следующее:
не обнаружена
Запрошенный URL / не найден на этом сервере.
Кроме того, при попытке использовать ErrorDocument для обработки запроса возникла ошибка 404 Not Found.
Я не понимаю, почему URL-адрес non-existent-subdomain.example.com
выдает ошибку 404 без пользовательской ошибки, как показано выше, а URL-адрес для eg.example.com/non-existent-file
выдает полную настраиваемую ошибку 404.
Может кто-нибудь посоветует по этому поводу. Спасибо.
Интересный; этот синтаксис задокументирован только для работы с 410
код состояния.
В любом случае использование Redirect 404 /
объясняет невозможность обслуживания страницы пользовательской ошибки - на нее влияет Redirect
, слишком.
Давая 404
'ing vhost его собственный пустой DocumentRoot
это один из вариантов, поскольку он может тогда "нормально" 404
запросы, не применяя его глобально ко всему на vhost (включая страницу ошибки).
В качестве альтернативы .. если Redirect
работает для 404, возможно RedirectMatch
может тоже?
RedirectMatch 404 ^/(?!err)