2009-04-30 5 views
2

URL全体に基づいてクエリ文字列を含むキャッシングを行い、Apacheがファイルを認識して使用する必要があります。それは一致を見つけるようだが、ファイルをレンダリングする前にクエリ文字列を取り除く。mod_rewriteは、クエリ文字列でフルパスを渡すのに役立ちます。

URL:キャッシュフォルダ内のファイルシステム上のwww.somesite.com/default.asp?foo=bar

キャッシュされたページのファイル名:?リライトでdefault.aspのFOO =バー

私の現在の試みこれは、REWすべき

RewriteRule ^(.+)$ /site_root/cache/$1 [L,QSA] 

:あなたはこのような何かをしようとする場合があります

RewriteCond /site_root/cache/%{REQUEST_FILENAME}?%{QUERY_STRING} -f 
RewriteRule ^.*$ /site_root/cache/%{REQUEST_FILENAME}?%{QUERY_STRING} [L,QSA] 

答えて

1

あなたが使用しようとしていると私はと思ってURLに "default.asp"を書いてください。 QSAは、元のクエリ文字列を書き換えられたURLに追加する必要があります。

私はこれがあなたが探しているものであると確信しているわけではないので、私に知らせていないなら、私は助けようとします。

+0

ありがとうsuperchink。 RewriteLogを使って何が起きているのかを確認していますが、クエリの文字列を削除してdefault.aspとの照合を試みるように見えます。 apacheが同じ名前のファイルを提供できるように、ファイル名とクエリ文字列を保存する必要があります。 default.aspかindex.phpかfoobar.bazかどうかは関係ありませんが、一致するファイルを提供する必要があります。ファイル名には、私がabvoeを述べたようにクエリ文字列が含まれています。 –

1

私の必要性を満たすソリューションが見つかりました。

Apacheは、クエリ文字列を実際にはparamsのセットに引き出したいと考えていますが、これは正常です。

Apacheで1つ上に戻るために、私はちょうど? |で文字列に!私がそれをやった後は、文字列がもうクエリ文字列として見えませんでした。私の場合、パラメータは無関係なので、正常に動作します。私がしなければならないのは、疑問符の代わりにパイプでファイル名を書き出すことだけです。簡単に。

解決策があればお気軽にコメントしてください。

ここに私のためにやっているルールがあります。 Apacheは結果をMIMEと認識しないので、text/htmlに強制します。

RewriteRule ^(.+)$ /site_root/cache/%{HTTP_HOST}$1|%{QUERY_STRING} [L,T=text/html] 
関連する問題