私はそれに遭遇し、助けになる単一のGoogleの結果を見つけることができなかったので、この質問に自己回答するつもりです。特定のクエリ文字列引数が存在する場合はApache2.2でテキストオプション付きRewriteMapは常に結果を返しません
、私はこのように作らRewriteMap命令を持って、URLにリダイレクトします
RewriteMap redirect "txt:/etc/arbitrary1/arbitrary2/redirect.txt"
RewriteCond %{QUERY_STRING} (^|&)foo=([^&]+) [NC]
RewriteCond ${redirect:%1} !^$
RewriteRule ^.*$ ${redirect:%1} [301,L]
そして/etc/arbitrary1/arbitrary2/redirect.txt
:
foo http://hello.invalid/somepath/1 # 1
bar http://hello.invalid/somepath/2 # 2
baz http://hello.invalid/somepath/3 # 3
問題私が遭遇したのは、私が使った "foo、bar、baz"のうち、${redirect:%1}
ディレクティブのどれが空白(つまり "一致しない")になっても関係ありませんでした。これはredirect.txt
の形式に関係なく発生しました。私が何を発見したのかを見てください。