2017-02-16 4 views
0

私はrewrite_modを使用してWebサービス要求を書き換えています。リクエストのQUERY_STRINGに特定のパラメータが含まれている場合、URLにはいくつかの追加パラメータがあります。これは私の書き換え条件です。また、キーと値のペアを定義するRewriteMapも使用します。 RewriteCondが一致すると、キーの値が書き換えられたURLに追加されます。RewriteRuleがRewriteMapキーと一致しない場合、元のリクエストURLをデフォルト値として取得するにはどうすればよいですか?

すべてうまくいきましたが、RewriteMapがRewriteMapファイルでキーを見つけることができない場合に備えて、RewriteRuleの置き換えにデフォルト値を追加します。 RewriteRuleの構文は${ MapName : LookupKey | DefaultValue }のようになります。 Look-up-Keyが見つからない場合は、代わりにDefaultValueが使用されます。

キーが見つからない場合、元のリクエストURLが使用され、置換は行われません。

私の最初のアプローチは、${MapName:$1|http://%{HTTP_HOST}%{REQUEST_URI}?{QUERY_STRING}}または${MapName:$1|http://%{HTTP_HOST}%{REQUEST_URI}}を使用することでしたが、どれも機能しませんでした。私は|の後にDefaultValueとして何を入れるべきか分からない。

答えて

0

私の問題の解決策が見つかりました。正しいキーがRewriteMapファイルにあるかどうかをチェックするRewriteCondを定義する必要があります。マップファイルにない場合、RewriteRuleはsciptになり、元のリクエストURLが使用されます。

RewriteCondはRewriteCond ${MapName:$1|NOT_FOUND} !NOT_FOUNDのようになります。

関連する問題