2

Rails アプリの Phusion Passenger で suburi をデプロイするためのメンテナンス ページのセットアップを取得しようとしています。すべてのドキュメントは DocumentRoot ReWrite ルールを示していますが、これは表示されません (表示されるべきではないと思います)。サブリを指すように ReWrite ルールをハッキングしてみましたが、うまく動作しないようです。誰もが機能するセットアップを取得できましたか?

4

2 に答える 2

0

私はまったく同じ問題を抱えています。私はbeforeフィルターの方法を使用していますが、実際にはこの方法は嫌いです。

更新して答える

これは、複数のサブ URI がある場合に機能します。ここで唯一欠けているのは、ヘッダーを 503 に設定できないことです。これは、ErrorDocument が静的ファイルに依存しているため、実行時にどこにあるかを特定できないためです。

app1 と app2 が私のサブ URI の 1 つであると仮定します

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
于 2010-07-03T08:18:47.253 に答える
0

それで、ようやくこれに取り組む時間ができて、メンテナンスページを処理する mod_rewrite メソッドを微調整して実際に使用できることがわかりました。サブドメインの場合、ルート ディレクトリにアプリケーションのパブリック ディレクトリへのシンボリック リンクが作成されることに注意してください。public ディレクトリにメンテナンス ファイル (またはサブディレクトリ) が含まれている場合は、mod_rewrite を接続して見つけることができます。

たとえば、アプリケーションの名前がapp1で、maintenance.htmlファイルがpublicディレクトリのサブディレクトリシステムに格納されているとします。これは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
于 2010-07-08T16:44:25.150 に答える