У меня есть сервер 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