1

Cookie 値とクエリ文字列値に基づいてリダイレクトしようとしていますが、両方の値が正しく返されないようです。私は使用しています:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_COOKIE} secret=([^;]+) [AND]
RewriteCond %{QUERY_STRING} ^file=(\w+)$
RewriteRule ^downloads/(.*)/$ /downloads/%1/%2

URL「/downloads/?file=protected/doc.pdf」を使用します。「/downloads/[secret cookie_val]/protected/doc.pdf」へのリダイレクトを希望します

ありがとう!

4

1 に答える 1

1

[AND]フラグはありません。条件は、デフォルトで一緒に「AND」されます。

また、 を要求している場合は、正規表現に/downloads/?file=protected/doc.pdfが 1 つ多すぎます。/

RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{QUERY_STRING}:::%{HTTP_COOKIE} ^file=(\w+):::secret=([^;]+)
RewriteRule ^downloads/(.*)/?$ /downloads/%2/%1

RewriteCond編集: を使用して以前の後方参照にアクセスしようとしていたことに気付きました。%2で別のグループを作成したため、空白になります%{QUERY_STRING}RewriteCondしたがって、2 つの変数を 1 つに結合し、次のように照合する必要があります: `%{QUERY_STRING}:::%{HTTP_COOKIE}。その後、クエリ文字列と Cookie の両方を後方参照できるようになります。

そして、RewriteCond %{ENV:REDIRECT_STATUS} !200書き換えエンジンのループを防ぐためです。

于 2012-10-02T22:02:01.780 に答える