Ich werde diese Frage selbst beantworten, da ich darauf gestoßen bin und kein einziges Google-Ergebnis gefunden habe, um zu helfen. Hoffentlich kann das einige zukünftige Personen retten.RewriteMap mit Textoption gibt immer kein Ergebnis zurück
In Apache2.2, ich habe eine RewriteMap wie diese gestaltet, auf eine URL zu umleiten, wenn ein bestimmtes Query-String-Argument vorhanden ist:
RewriteMap redirect "txt:/etc/arbitrary1/arbitrary2/redirect.txt"
RewriteCond %{QUERY_STRING} (^|&)foo=([^&]+) [NC]
RewriteCond ${redirect:%1} !^$
RewriteRule ^.*$ ${redirect:%1} [301,L]
Und /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
Das Problem Ich lief darin war, egal, welche von "foo, bar, baz" ich verwendete, die ${redirect:%1}
Direktive würde leer (dh "keine Übereinstimmung") zurückgeben. Dies war unabhängig von dem Format redirect.txt
. SIEHE UNTEN FÜR WAS ICH ENTDECKT HABE.