2009-12-08 51 views
2

我正在嘗試爲Rails應用的Phusion Passenger上的suburi部署獲取維護頁面設置。所有文檔都顯示了DocumentRoot ReWrite規則,它們沒有出現(不認爲它們應該)在子句上重寫。我嘗試在ReWrite規則上指向suburi,但似乎無法使其工作。有沒有人能夠得到一個可行的設置?如何在Passenger suburi部署上配置維護頁面

回答

0

我有完全相同的問題。 雖然我使用之前的過濾方式,但我實際上討厭這種方法。

更新,並回答

如果我有幾個子的URI這會工作,這裏的唯一缺少的是,我不能頭設置爲503,因爲ErrorDocument的是依靠一個靜態文件,我不能確定它在運行時的位置。

承擔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 
+0

讓我知道,如果上述工程爲你,我會標誌它作爲答案。 – naven87 2010-07-20 18:02:40

+0

我終於有時間來測試你的重寫規則了,如果在應用最後一條規則時有幾個子uri,我發現它會有問題。我修改了一下,並將其發佈在我的回答 – boblu 2010-09-06 07:40:29

+0

中,您可以使用多個錯誤文檔,每個目錄指令一個 – graywh 2011-03-02 22:24:08

0

所以我終於有一些時間來這方面的工作,發現實際上可以使用的操作維護頁一些調整mod_rewrite的方法。請記住,對於子域,在根目錄中創建了應用程序公共目錄中的符號鏈接。現在如果公共目錄包含維護文件(或者在一個子目錄中),你可以連接mod_rewrite來找到它。

例如,假設應用程序名爲APP1,並maintenance.html文件存儲在一個子目錄系統公共目錄。下面是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