MOD Rewrite Frage
Frank Stabenau
- webserver
Hallo Leute,
ich habe eine Frage bezüglich MOD Rewrite.
Ich übergebe in meiner URL 2 Variablen, wobei meine 2. eine URL enthält mit einem Deeplink. Dieser enthält auch Variablen mit Werten.
mein .hataccess sieht so aus:
RewriteEngine on
RewriteRule (.*).html(.*)$ index.php?page=$1&URL=$2 [L]
Und möchte gern, dass er nach der 2. Variable aufhört zu übersetzen und die Url so nimmt, wie er sie bekommt.
Bis jetzt macht er aus: irgendwas.htmlhttp://www.haumichdod.net?var=wert
http://www.haumichdod.net
Wie stell ich es an, dass er den Rest ignoriert? Könnt ihr mir helfen?
Danke schon mal
Gruß Frank
Lieber Frank,
Ich übergebe in meiner URL 2 Variablen, wobei meine 2. eine URL enthält mit einem Deeplink. Dieser enthält auch Variablen mit Werten.
Tust Du nicht! Du übergibst (nach dem Fragezeichen!) nur eine Variable mit Wert. Deine "übergebene URL" ist vollkommener Blödsinn, da es für den Browser nur _eine_ URL geben kann. Du musst schon Deine "URL" nach dem Schema http://balblubb/foo.html?var1=wert1&var2=wert2 bauen.
Bis jetzt macht er aus: irgendwas.htmlhttp://www.haumichdod.net?var=wert
http://www.haumichdod.net
Das machen wir jetzt besser:
http://blablubb/irgendwas.html?url=http://www.haumichdod.net&var=wert
Dabei gibt es zu beachten, dass das so im HTML-Quelltext nicht stehen darf! Da müssen manche Zeichen (wie "&") codiert sein ("&" wird zu "&" und so weiter).
Ich weiß zwar nicht _wofür_ Du das brauchst, aber Du solltest vorsichtig sein, was Du aus den übertragenen Parametern machst. Vor allem etwas wie include($_GET['url'])
solltest Du _dringend_ vermeiden!
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hallo Felix,
danke für deine Antwort. Ich weiß nur nicht genau, ob du mich richtig verstanden hast. Hier noch etwas mehr Erläuterung:
Hintergrund ist, dass ich eine URL als Variable übergeben möchte, die ich dann in einem IFrame darstelle. Ohne Rewriting funzt das ohne Probleme. Selbst mit übernimmt der die angehängte URL! Nur wenn diese weitere Variablen enthält beginnend mit Fragezeichen ist ab da Schluß. Er stellt das ? schon garnicht mehr dar.
Meine normale Url sieht so aus:
http://www.meinedomain.de/index.php?page=Wert&URL=http://www.einzublendende-domain.de?mitvariablien=werten
im .htaccess steht:
RewriteEngine on
RewriteRule (.*).html(.*) index.php?page=$1&URL=$2
und übergeben tu ich:
http://www.meinedomain.de/werten.htmlhttp://www.einzublendende-domain.de?mitvariablien=werten
und es kommt dabei heraus:
$_GET['page'] hat den Wert: werten
$_URL['URL'] hat den Wert: http://www.einzublendende-domain.de
Was kann ich anstellen um die komplette URL zu erhalten ohne das ich diese in der htaccess mit regulären Ausdrücken zerpflücken muss? Denn die angehängte URL ist immer anders...
Viele Grüße
Frank
Mein lieber Frank,
was ist denn bitteschön das hier?
http://www.meinedomain.de/index.php?page=Wert&URL=http://www.einzublendende-domain.de?mitvariablien=werten
Das ist Wurstsuppe! Ein "?" trennt eine URL von ihren angehängten Parametern. Da kann es keine zwei davon geben! Wozu auch!
Was Du erreichen möchtest ist, auf eine andere Domain weiterzuleiten, wobei Parameter mit übergeben werden sollen. Aber Du kannst keine URL mit Parametern als Parameter übergeben. Das wäre eine Art Verschachtelung von Werte-Paaren innerhalb des Request-Strings. Gibt es nicht!
Eine Lösung könnte ich mir so vorstellen:
Domain "a" bekommt Wertepaare mit a_var1=wert1&a_var2=wert2
und
Domain "b" bekommt Wertepaare mit b_var1=wert1&b_var2=wert2
damit dann bei der Werteübergabe an Domain "b" auch nur die für "b" bestimmten Parameter angenommen werden. Die Domain "b" kann dann als URL=domain-b im Request geführt werden.
Das Ganze könnte dann einen solchen Request ergeben:
http://www.meinedomain.de/werten.html?URL=http://www.einzublendende-domain.de&meinevar=meinwert&fremdvar=fremdwert
im .htaccess steht:
RewriteEngine on
RewriteRule (.*).html(.*) index.php?page=$1&URL=$2
Also das müsste man dann auch anpassen.
RewriteRule (.*).html?(.*URL=([^&]*).*meinevar=([^&]*).*) index.php?page=$2&URL=$3 [QSA]
Mal sehen, ob Dir das hilft...
Liebe Grüße aus Ellwangen,
Felix Riesterer.