【发布时间】:2010-12-24 13:12:24
【问题描述】:
我正在尝试在 Phusion Passenger 上为 rails 应用程序的 suburi 部署设置维护页面。所有文档都显示了 DocumentRoot ReWrite 规则,这些规则不会出现(不认为应该)在 suburis 上重写。我尝试修改 ReWrite 规则以指向 suburi,但我似乎无法让它工作。有没有人能够得到一个有效的设置?
【问题讨论】:
我正在尝试在 Phusion Passenger 上为 rails 应用程序的 suburi 部署设置维护页面。所有文档都显示了 DocumentRoot ReWrite 规则,这些规则不会出现(不认为应该)在 suburis 上重写。我尝试修改 ReWrite 规则以指向 suburi,但我似乎无法让它工作。有没有人能够得到一个有效的设置?
【问题讨论】:
我遇到了完全相同的问题。 虽然我用的是前置过滤方式,但其实我很讨厌这种方式。
假设 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
【讨论】:
所以我终于有一些时间来处理这个问题,发现您实际上可以使用 mod_rewrite 处理维护页面的方法进行一些调整。请记住,对于子域,在根目录中创建了一个指向应用程序公共目录的符号链接。现在如果公共目录包含维护文件(或在子目录中),您可以连接 mod_rewrite 来找到它。
例如假设应用程序名为app1,maintenance.html文件存储在publicsystem中/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
【讨论】: