如何为重定向的 Zope 创建 Apache 错误页面

如何为重定向的 Zope 创建 Apache 错误页面

我有一些虚拟主机,它们重定向到 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 服务暂时不可用错误。

错误文档是全世界可读的;目录是全世界可执行的。

我该怎么做才能让错误页面运行?mod_rewrite 有什么特别之处需要考虑吗?

答案1

我终于找到了解决方案(在这一页);确实,问题与重写有关。我修改了我的虚拟主机,如下所示:

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

(在我的例子中,当 Zope 关闭时,我得到状态 503;我的条件也准备好接收更具体的消息)。

由于 Apache 目前还不需要提供静态内容,因此我需要启用 mime 模块;就我而言:

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

相关内容