2009-05-20 4 views
1

Ich lerne gerade mod_rewrite und regex Zeug, und was ich versuche zu tun ist, Variablen eines beliebigen Namens mit einer beliebigen Anzahl von Variablen und Werten in ein Skript zu übergeben und sie an ein anderes Skript weiterleiten zu lassen.Kann mod_rewrite einen doppelten Schrägstrich beibehalten?

hier ist das, was ich bisher:

RewriteEngine on 
RewriteRule ^script\$(.*[\])? anotherscript?ip=%{REMOTE_ADDR}&$1 [L] 

Das ist alles, außer dass einer der Parameter zu arbeiten scheint, ich bin vorbei eine URL ist und die // nach http: // wird immer nach unten abgestreift zu einem Schrägstrich.

zum Beispiel ich

Skript $ url = http://www.stackoverflow.com

dann Umleitungen an:

anotherscript ip = 127.0.0.1 & url = http: /www.stackoverflow.com

und das zweite Skript Drosseln auf dem Single-Slash.

Ich weiß, dass das Beibehalten eines Doppelstrichs genau das Gegenteil dessen ist, was Leute normalerweise mit mod_rewrite machen. Gibt es eine Möglichkeit, den Doppelstrich beizubehalten?

EDIT: Lösung mit Gumbo Hilfe gefunden.

RewriteCond %{THE_REQUEST} ^GET\ (.*)/script\$([^\s]+) 
RewriteRule ^script\$(.*) anotherscript?ip=%{REMOTE_ADDR}&%2 [L] 

Ich hatte noch hinzufügen (. *) Vor/script auf der RewriteCond, sobald ich, dass es der 404-Fehler losgeworden war, und es war dann nur eine Frage der Spiele der Durchreise.

Antwort

1

Ich denke, dass es etwas falsch mit dem ersten Teil Ihrer RewriteRule regex sein kann

^script\$(.*[\])? 

Der Backslash (\) wird verwendet, um ein Sonderzeichen in ein Litteral ein zu entkommen, so versuchen Sie tatsächlich passen eine schließende Klammer (]), ist das beabsichtigt?

versuchen, diese

RewriteRule ^script\$(.*)? anotherscript?ip=%{REMOTE_ADDR}&$1 [L] 
+0

guten Fang, ich entfernte diesen Teil und es funktionierte immer noch, aber der Doppel-Schrägstrich wird immer noch in einen einzigen Schrägstrich umgewandelt. – nerdabilly