Hallo,
in einer .htaccess habe ich notiert:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?url=$0 [L]
So werden alle Anfragen auf die index.php umgeleitet und die eigentliche request_uri als $_GET["url"] übergeben.
Wenn ich jetzt example.com/abc def&ghi aufrufe, zerschiesst mir das Ampersand ja meine $_GET["url"], bzw. kriege ich nur das, was vor dem Ampersand steht, ist auch klar.
Ich könnte auch auf $_SERVER["REQUEST_URI"] zurück greifen, finde da aber bei o.g. url dann "/abc%20def&ghi". Das Leerzeichen wird dann also automatisch offenbar vom FF umkodiert in %20, obwohl ich in der Adresszeile "abc def&ghi" stehen habe. $_SERVER["REDIRECT_URL"] ist übrigens auch "/abc def&ghi" (ohne das %20).
Da ich das mit dem Menü (da steht dann als href="abc def&ghi") bzw. mit einem Switch (zur Anzeige des richtigen Inhaltes) abgleiche, wäre die Frage, ob ich urldecode($_SERVER["REQUEST_URI"]) nutzen sollte? Oder gibt es sonst noch Fallstricke, die zu bedenken wären?
Gruß
jobo