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

Расположение скрипта Apache ErrorDocument

Используя apache 2.4 в Linux, с несколькими виртуальными серверами, каждый виртуальный сервер со своим собственным DocumentRoot, я хотел бы, чтобы локальное перенаправление ErrorDocument главного сервера apache выполняло один скрипт Perl, относящийся к основному DocumentRoot apache, а не скрипт perl под каждым виртуальный сервер.

Что происходит, так это то, что для построения пути к файловой системе используется корень документа виртуального сервера, а не корень документа главного сервера.

Есть ли способ настроить сервер apache для использования только одного локального сценария перенаправления вместо (по-видимому) необходимости иметь (идентичный) сценарий в DocumentRoot каждого виртуального сервера?

Вы можете установить единый глобальный документ об ошибке, разместив следующие директивы в глобальном (серверном) контексте (т.е. не внутри какого-либо блока <VirtualHost>). Затем он будет работать для всех ваших виртуальных хостов. Это показывает вам статический HTML-файл, но его можно легко изменить, чтобы вместо этого он стал сценарием perl.

Alias /error-404.html /path/to/my/errors/error-404.html
ErrorDocument 404 /error-404.html

<Directory "/path/to/my/errors">
  require all granted
</Directory>

Вы можете установить ErrorDocument как внешний ресурс, например.

ErrorDocument 500 http://error.example.com/server_error.html

Таким образом, вы можете просто сослаться на скрипт на своем основном виртуальном хосте.

Вы не поверите, но это задокументировано в документация для ErrorLog.