如何在Passenger suburi部署上配置维护页面

时间:2009-12-08 18:41:04

标签: rewrite passenger phusion

我正在尝试在Phusion Passenger上为rails应用程序获取子库部署的维护页面设置。所有文档都显示了DocumentRoot ReWrite规则,这些规则没有出现(不认为应该)在suburis上重写。我试图在ReWrite规则上乱搞指向suburi,但我似乎无法让它工作。有没有人能够得到一个有效的设置?

2 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题。 虽然我使用的是之前的过滤方式,但实际上我讨厌这种方法。

更新并回答

如果我有几个子uris,这将有效,这里唯一缺少的是我无法将标头设置为503,因为ErrorDocument依赖于静态文件,我无法确定它在运行时的位置。 / H3>

假设app1和app2是我的子uri之一

RewriteEngine On
RewriteCond %{REQUEST_URI} !.(css|gif|jpg|png)$
RewriteCond %{DOCUMENT_ROOT}/$1/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^/([^/]+)(/|/.*)?$ /$1/system/maintenance.html [L]

RailsBaseURI /app1
RailsBaseURI /app2

答案 1 :(得分:0)

所以我终于有时间研究这个问题,发现你实际上可以使用mod_rewrite方法处理维护页面并进行一些调整。请记住,对于子域,在根目录中创建了一个符号链接到应用程序的公共目录。现在,如果公共目录包含维护文件(或在子目录中),您可以连接mod_rewrite来查找它。

例如,假设应用程序名为 app1 maintenance.html 文件存储在 public <的系统子目录中/ strong>目录。以下是apache配置文件中的行,无论是在 RailsBaseURI / app1 行之前还是之后声明它都无关紧要

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/app1/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /app1/system/maintenance.html [L]

RailsBaseURI /app1