我有一些虚拟主机重定向到 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 Temporarily Unavailable 错误。
错误文档是世界可读的;目录是世界可执行的。
我该怎么做才能让错误页面运行?由于 mod_rewrite,有什么特别需要考虑的吗?
我终于找到了解决方案(在此页面上);实际上,问题与重写有关。我这样修改了我的虚拟主机:
(在我的例子中,当 Zope 关闭时我得到状态 503;我的状态也准备好接收更具体的消息)。
因为到目前为止 Apache 不需要提供静态内容,所以我需要启用 mime 模块;就我而言: