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

Как создать страницу ошибок Apache для перенаправленного Zope

У меня есть несколько виртуальных хостов, которые являются перенаправлениями на процессы сервера Zope:

RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/%{HTTP_HOST}:80/theroot/VirtualHostRoot/$1 [L,P]

Конечно, если процесс Zope не запущен, перенаправление не выполняется. Это может произойти во время перезапуска экземпляра (например, для обновления) или для экземпляров разработки / тестирования, которые не должны работать все время. В этом случае я хотел бы получить дружеское сообщение.

Таким образом, с единственной целью обработки ошибок я определил DocumentRoot:

DocumentRoot /var/zope-instances/my-instance/htdocs
ErrorDocument 500 /error-500.html
ErrorDocument 503 /error-500.html

К сожалению, это не сработает; при попытке открыть страницу, когда Zope не работает, Apache сообщает мне:

Сервер временно не может обработать ваш запрос из-за простоя в обслуживании или проблем с производительностью. Пожалуйста, попробуйте позже.

Кроме того, при попытке использовать ErrorDocument для обработки запроса возникла ошибка 503 Service Tempoporary Unavailable.

Документы об ошибках доступны для чтения во всем мире; каталоги исполняются во всем мире.

Что я могу сделать, чтобы запустить страницу с ошибкой? Есть ли что-то особенное, что нужно учитывать из-за mod_rewrite?

Я наконец нашел решение (на эта страница); действительно, проблема была связана с переписыванием. Я изменил свой виртуальный хост следующим образом:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/error-50[0-3].html$
RewriteRule ^/(.*) http://localhost:8080/...

(в моем случае я получаю статус 503, когда Zope не работает; мое состояние также готово для более конкретных сообщений).

Поскольку до этого момента Apache не нуждался в обслуживании статического контента, мне нужно было включить модуль mime; в моем случае:

cd /etc/apache2/mods-enabled
ln -s ../mods-available/mime.load .