我要自己回答这个问题,因为我碰到它并找不到一个Google结果来帮助,所以希望这可以节省一些未来的人一些时间。带文本选项的RewriteMap总是返回没有结果
在APACHE2.2,我有塑造这样一个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
的格式无关。请参阅以下我发现的内容。