我有一些虚拟主机是redirect到Zope服务器进程:
RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/%{HTTP_HOST}:80/theroot/VirtualHostRoot/$1 [L,P]
当然,如果Zope进程没有运行,redirect失败。 在重启实例(例如更新)或者开发/testing实例(这些实例不应该一直运行)时,可能会发生这种情况。 在这种情况下,我想有一个友好的信息。
因此,为了error handling的唯一目的,我定义了一个DocumentRoot:
DocumentRoot /var/zope-instances/my-instance/htdocs ErrorDocument 500 /error-500.html ErrorDocument 503 /error-500.html
不幸的是它不会工作。 当Zope停机的时候尝试一个页面,Apache告诉我:
由于维护停机或容量问题,服务器暂时无法处理您的请求。 请稍后再试。
此外,尝试使用ErrorDocument处理请求时遇到503服务暂时不可用错误。
错误文件是世界可读的; 这些目录是世界可执行的。
我能做些什么来获得错误页面运行? 有没有什么特别的考虑因为mod_rewrite?
我终于find了解决scheme(在这个页面 ); 事实上,这个问题与改写有关。 我修改了我的虚拟主机,像这样:
RewriteEngine On RewriteCond %{REQUEST_URI} !^/error-50[0-3].html$ RewriteRule ^/(.*) http://localhost:8080/...
(在我的情况下,当Zopeclosures时,我得到了状态503;我的情况也准备好了更具体的消息)。
由于Apache到目前为止不需要提供静态内容,所以我需要启用mime模块; 在我的情况下:
cd /etc/apache2/mods-enabled ln -s ../mods-available/mime.load .