Problem mit mod_rewrite und RewriteCond
Heizer
- webserver
Liebes Forum
Ich probierte gerade, folgenden Rewrite zu machen:
/datei.html?edit -> /edit?datei.html
Mein Code sieht folgendermaßen aus:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^edit$
RewriteRule /(.) /edit?$0
Das funktioniert aber nicht, und es liegt nicht an der RewriteRule, wenn ich die RewriteCond auskommentiere, funktionierts. wenn ich statt ^edit$ ^.*$ verwende, klappt es auch, aber bei ^.+$ nicht. Es sieht also so aus, als wenn %{QUERY_STRING} lehr wäre, wenn ich die Variable aber an die letzdendliche URL anhänge [ /edit?$0(%{QUERY_STRING}) ], so wird "edit" angezeigt.
Ich hab lange rumprobiert und lange Docu gelesen, aber ich komme nicht dahinter, warum es nicht klappt. Vielen Dank für jeden Tip.
Heizer
Hallo Heizer,
RewriteEngine On
RewriteCond %{QUERY_STRING} ^edit$
RewriteRule /(.) /edit?$0Das funktioniert aber nicht, und es liegt nicht an der
RewriteRule, wenn ich die RewriteCond auskommentiere,
funktionierts. wenn ich statt ^edit$ ^.*$ verwende, klappt
es auch, aber bei ^.+$ nicht. Es sieht also so aus, als
wenn %{QUERY_STRING} lehr wäre, wenn ich die Variable aber an die
letzdendliche URL anhänge [ /edit?$0(%{QUERY_STRING}) ], so wird
"edit" angezeigt.
Ich glaube, du hast das mit den Variablen noch nicht so recht
verstanden: es gibt kein $0 :-) Du meinst sicher $1. Das gibt es
durchaus. Weiterhin solltest du noch einen Quantifier verwenden,
also aus der RewriteRule lieber das hier machen:
RewriteRule /?(.+) /edit?$1
Weiterhin kannst du in der RewriteCond statt %{QUERY_STRING}
mal %{ENV:QUERY_STRING} verwenden, vielleicht klappt das ja besser.
Wenn das auch nicht klappt, verwende %{REQUEST_URI} folgendermassen:
RewriteCond %{REQUEST_URI} ?edit$
Grüße,
CK