サブドメインに基づいて自分の(Rails)アプリケーション内のページをキャッシュします。特定のアクションのページは、/ public/cache /(サブドメイン)/にキャッシュされます。アプリケーションはPhusion Passengerを使用してApacheで実行されています。キャッシュは正常に動作しています。問題は、Apacheがキャッシュされたページをピックアップしていないように、Railsをバイパスしていないことです。私の書き換えルールは間違っていて、私はそれらを修正するのに役立つ必要があります。キャッシュされたページのMod書き換えルール
私は多くの一例として、使用している、に位置提案:あるhttps://github.com/yeah/page_cache_fu#readmeは、次のように:
RewriteMap uri_escape int:escape
<Directory /var/www/example.com/current/public>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} GET [NC]
RewriteCond %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING}.html -f
RewriteRule ^([^.]+)$ cache/%{HTTP_HOST}/$1${uri_escape:%{QUERY_STRING}}.html [L]
RewriteCond %{REQUEST_METHOD} GET [NC]
RewriteCond %{DOCUMENT_ROOT}/cache/%{HTTP_HOST}/index.html -f
RewriteRule ^$ cache/%{HTTP_HOST}/index.html
これに伴う問題は、それがディレクトリを期待しているように思われる
完全なhttpホスト(キャッシュ/サブドメインではなくcache/subdomain.example.comを探しています)。
編集:Railsアプリをcache/subdomain.example.comにキャッシュするように変更しても、Apacheはまだそれを使用しないので、サブドメインの面だけではなく間違っているようです。
誰かが正しいルールを思いついてくれたら助かりますか?
編集(2):
私は(ちょうど作業開始ポイントを取得しようとする)以下に私の書き換えを簡素化している:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ [NC]
RewriteCond ^stats$ cache/%1/stats.html [L]
私はこれがあることを
http://abc.example.com/statsを引き起こすと思うだろう
http://abc.example.com/cache/abc/stats.html
書き換えられません。私はまた、RewriteLogエントリを追加し、私はそれがhttp://abc.example.com/var/www/example.com/current/public/cache/abc/stats.htmlにリダイレクトしようとしていると思うと思う。これは、ブラウザに表示される 'L'オプションと一緒に 'R'オプションを追加すると、さらに確認されます。http://abc.example.com/var/www/....etc私。パブリックに直面している部分だけではなく、完全なドキュメントルートを追加しているようです。
もちろん、上記の結果は、ブラウザに404エラーが返されることです。
私のルールにはまだ間違いがありますか?
編集:実際はバグです。
http://code.google.com/p/phusion-passenger/issues/detail?id=563
ここで有効にしようとしているリダイレクトの例を教えてください。私。 「URLに移動すると、「OtherURL」にリダイレクトされたい。正確にしてください。ありがとう。 – AgentConundrum
エージェント、これは私が使用したい2つの主なインスタンスです:http://abc.example.comに移動すると、http://abc.example.com/cache/にリダイレクトされます。 abc/index.html; http://abc.example.com/statsに移動すると、http://abc.example.com/cache/abc/stats.htmlにリダイレクトされます。いずれの場合も、キャッシュされたファイルが存在する場合のみです。どちらの場合も、ブラウザに表示されるURLは変更されないことをお勧めします。 –