mod_rewrite Frage
Frank Stabenau
- webserver
0 Dennis0 Frank Stabenau0 Dennis
Hallo Leute,
ich möchte per mod_rewrite Urls umschreiben.
Ich habe index.php?main=agb mittels
RewriteRule ^(.*).html$ index.php?main=$1
in agb.html umgewandelt.
Wenn ich nun aber hinten dran noch eine weitere Variable habe (zB. index.php?main=agb&lang=de) kann ich es mit
RewriteRule ^(.*).html,(.*)$ index.php?main=$1&lang=$2
in agb.html,de umwandeln.
Mein Problem ist nun aber, das Variante 1 nicht mehr funktioniert ohne das ich am Ende das Komma (agb.html,) stehen habe.
Wie setze ich dass am besten um?
Danke schonmal
Gruß
Frank
Hi Frank,
Ich habe index.php?main=agb mittels
RewriteRule ^(.*).html$ index.php?main=$1
in agb.html umgewandelt.
Man sagt es eigentlich eher anders herum - du lässt agb.html in index.php?main=agb "umwandelt" bzw. umschreiben ;-)
Wenn ich nun aber hinten dran noch eine weitere Variable habe (zB. index.php?main=agb&lang=de) kann ich es mit
RewriteRule ^(.*).html,(.*)$ index.php?main=$1&lang=$2
in agb.html,de umwandeln.
Mein Problem ist nun aber, das Variante 1 nicht mehr funktioniert ohne das ich am Ende das Komma (agb.html,) stehen habe.
Wie setze ich dass am besten um?
Probiers mal so:
RewriteRule ^(.*)\.html(,.*)?$ index.php?main=$1&lang=$2
Alternativ ließe sich das aber wohl auch so machen, du rufst die Datei über
agb.html (ohne Sprachangabe) oder
agb.html?lang=de (mit Sprachangabe) auf,
was umgewandelt wird zu
index.php?main=agb&lang=de
durch diese Rewrite Rule:
RewriteRule ^(.*)\.html$ index.php?main=$1 [QSA]
Das QSA steht für Query-String append und bewirkt, dass alle weiteren "Anhängsel" auch an die neue URL wieder mit angehängt werden.
Ein Hinweis noch: Ich hoffe, dass du in der index.php _nicht_
include $_GET['main']; //große Sicherheitslücke!
verwendest.
MfG, Dennis.
Hallo,
danke für deine schnelle Antwort.
So richtig komme ich aber noch nicht klar.
Mein Problem ist auch, das es nicht immer nur 1 oder 2 Variablen sind, sondern auch mal 5.
Ein Hinweis noch: Ich hoffe, dass du in der index.php _nicht_
include $_GET['main']; //große Sicherheitslücke!
Es ist ein kleiner Shop, wo nur die anzeige der Artikel so übergeben wird. Dinge Speichern wird mit POST übergeben.
Gruß
Frank
Hi Frank,
Mein Problem ist auch, das es nicht immer nur 1 oder 2 Variablen sind, sondern auch mal 5.
Wenn du es mit RewriteRule ^(.*)\.html$ index.php?main=$1 [QSA]
machst, wird der komplette Query String mit umgeschrieben, also
agb.html?lang=de&foo=bar&a=b&x=y
würde umgeschrieben zu
index.php?main=agb&lang=de&foo=bar&a=b&x=y
Ein Hinweis noch: Ich hoffe, dass du in der index.php _nicht_
include $_GET['main']; //große Sicherheitslücke!
verwendest!Es ist ein kleiner Shop, wo nur die anzeige der Artikel so übergeben wird. Dinge Speichern wird mit POST übergeben.
Ähm, was hat das eine mit dem Anderen zu tun? Von Speichern war nicht die Rede - es ging lediglich darum, wie du die Information ?main=agb auswertest und dass du es nicht wie oben gezeigt machen sollst, weil du dann eine fette Sicherheitslücke hättest.
MfG, Dennis.