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

Как указать ErrorDocument для VirtualHost в Apache2?

У меня есть сервер Apache 2, и у него есть несколько хостов с аналогичным определением:

<VirtualHost *:80>
    DocumentRoot /var/www/html/host1/
    ServerName host1.loc
    <Directory /var/www/html/host1>
        AllowOverride FileInfo Options AuthConfig
    </Directory>
    ErrorDocument 404 /index.php?error=404
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /var/www/html/host2/
    ServerName host2.loc
    <Directory /var/www/html/host2>
        AllowOverride FileInfo Options AuthConfig
    </Directory>
    ErrorDocument 404 /index.php?error=404
</VirtualHost>
...
<VirtualHost *:80>
    DocumentRoot /var/www/html/hostN/
    ServerName hostN.loc
    <Directory /var/www/html/hostN>
        AllowOverride FileInfo Options AuthConfig
    </Directory>
    ErrorDocument 404 /index.php?error=404
</VirtualHost>

Я хочу настроить страницу 404.

Проблема в том, что когда я пытаюсь протестировать страницу 404 на любом из хостов, я вижу страницу с самого последнего vhost. Что может быть не так с моей конфигурацией?

Поместите директивы ErrorDocument внутри тега Directory.

Ствол: https://httpd.apache.org/docs/trunk/custom-error.html

2.2: https://httpd.apache.org/docs/2.2/mod/core.html#errordocument

Пользовательские документы об ошибках настраиваются с помощью директивы ErrorDocument, которая может использоваться в глобальном контексте, контексте виртуального хоста или каталога. Его можно использовать в файлах .htaccess, если для AllowOverride задано значение FileInfo.

Используйте файл html вместо файла php.

ErrorDocument 404 /custom_error_404.html