2009-03-11 4 views
2

Verwenden habe ich die folgenden Regeln in meiner httpd.confWie RewriteCond Rückreferenzierung% N

RewriteEngine on 
     RewriteBase/
     RewriteCond %{QUERY_STRING} password=* 
     RewriteCond %{QUERY_STRING} bi2=(.*) 
     RewriteCond %{REQUEST_URI} /myGet.php(.*)$ 
     RewriteRule ^(.*)$ http://blog.myexample%1.com/$1 

Allerdings, wenn ich die Anforderungs-URI

/myGet.php?password=john ausgeführt & Bi 2 = 67

ich wurde

umgeleitet

http://blog.myexample.com/myGet.php?password=john&bi2=67

statt

http://blog.myexample67.com/myGet.php?password=john&bi2=67

Es scheint, dass% N für die RewriteCond BackReferencing funktioniert nicht. Obwohl $ N ist.

Antwort

3

Ändern Sie den Auftrag oder die RewriteCond Richtlinien, so dass die letzte Richtlinie ist, die Sie die Informationen aus wollen:

RewriteCond %{QUERY_STRING} password=* 
RewriteCond %{REQUEST_URI} /myGet.php(.*)$ 
RewriteCond %{QUERY_STRING} bi2=(.*) 
RewriteRule ^(.*)$ http://blog.myexample%1.com/$1 

Aber ich eher vorschlagen:

RewriteCond %{QUERY_STRING} password= 
RewriteCond %{QUERY_STRING} bi2=([^&]*) 
RewriteRule ^/myGet\.php.*$ http://blog.myexample%1.com$0 
+0

Hmm, nicht sicher, ob diese Art Neuordnung tut gut oder nicht. Was ist, wenn ich den zweitletzten% 2-Wert für die Rückwärtsreferenzierung brauche? – Graviton

+0

Es gibt keinen anderen Weg, dies zu tun. Oder zumindest: Ich kenne keinen anderen Weg, dies zu tun. Wenn Sie auch das "Passwort" benötigen, müssen Sie einige Tricks verwenden, um den Wert entlang der RewriteCond-Direktiven zu tragen oder sie zu einem Ausdruck zu kombinieren. – Gumbo