Ich möchte eine Apache-Umgebungsvariable basierend auf Query-String-Variable, aber ohne einige Parameter festlegen.Htaccess-Umgebungsvariable basierend auf Abfragezeichenfolge ohne einige Pamameter
zum Beispiel habe ich diese Abfrage-String:
utm_source=foo&my_param=baz&utm_medium=bar&_t=9999
jetzt, ich will eine Variable ohne utm_source
und utm_medium
:
my_param=baz&_t=9999
Ich kenne die Parameter nur entfernen (utm_source
& utm_medium
) ... die anderen sind nur ein Beispiel ...
ich habe wtrite dieser Code:
RewriteEngine On
RewriteBase/
RewriteRule^- [E=CustomQueryString:%{QUERY_STRING}]
RewriteCond %{ENV:CustomQueryString} ^(.*)&?(utm_source|utm_medium)=[^&]+&?(.*)$ [NC]
RewriteRule^- [E=CustomQueryString:%1%3]
die Ausgabe
utm_source=foo&my_param=baz&_t=9999
warum utm_source param bestehen?
ich habe auch versucht:
RewriteRule^- [E=CustomQueryString:%{QUERY_STRING}]
RewriteCond %{ENV:CustomQueryString} ^(.*)&?utm_source=[^&]+&?(.*)$ [NC]
RewriteRule^- [E=CustomQueryString:%1%2]
RewriteCond %{ENV:CustomQueryString} ^(.*)&?utm_medium=[^&]+&?(.*)$ [NC]
RewriteRule^- [E=CustomQueryString:%1%2]
der Ausgang ist richtig!
a=b&my_param=baz&_t=9999
ich verstehe nicht, warum diese Version nicht funktioniert!
RewriteCond %{ENV:CustomQueryString} ^(.*)&?(utm_source|utm_medium)=[^&]+&?(.*)$ [NC]
RewriteRule^- [E=CustomQueryString:%1%3]
Dank für die Erläuterung. Es ist möglich, die erste Regel zu beheben? Die erste Regel hat weniger Code und ist besser lesbar ... –
Sie können etwas wie '(. *) & (?: utm_source | utm_medium) ... (. *) ... (?: utm_source | utm_medium) verwenden. . & (. *) 'und haben als Ergebnis"% 1% 2% 3 ", aber das passt nur, wenn immer beide Argumente vorhanden sind. Ihre Lösung mit zwei Regeln sieht so aus, als wäre sie das Optimum. –
ok! Danke und Entschuldigung für mein schlechtes Englisch! –