dedlfix: Mod Rewrite, ist es so richtig?

Beitrag lesen

Tach!

Bist du sicher, dass du nicht REQUEST_URI verwenden willst? Was ist mit Verzeichnissen (und Symlinks)?
Mit REQUEST_URI funktioniert die Abfrage auf Vorhandensein von Files leider nicht.
Mit REQUEST_FILENAME kann ich zumindest auf existierende Files prüfen und die von der Umleitung ausschließen, was genau erwünscht ist.

REQUEST_FILENAME ist doch richtig, REQUEST_URI war falsch in meiner Erinnerung.

RewriteRule .* index.php?%{THE_REQUEST}

Und der Query-String?

Es gibt eine CGI-Variable, die den originalen Request enthält (deren Namen du leicht mit print_r($_SERVER) findest). Den Wert kannst du gleich aus $_SERVER lesen, ohne dir $_GET mit nicht zum eigentlichen Request gehörenden Werten zu bevölkern.

Aber REQUEST_URI war eine der Variablen, die ich meinte. Da steht der nicht umgeschriebene Request drin - zumindest der interessante Teil.
Und dann gibt es noch REDIRECT_URL, der den Teil der URL ohne Host und ohne Querystring enthält.

Nach der Umleitung ist da aber nix drin, wenn man sie nicht mitliefert. Da ich sowohl die Quasi-Path-Info benötige, als auch den Querystring, habe ich mit den gesamten Request leifern lassen und ihn dann mittles kleiner Funktion selber auseinandergenommen.

Zu umständlich.

RewriteRule .* index.php [QSA]

Dann bekommst du ein ganz normales $_GET ohne Rewrite-Zeugs drin und die URL bekommst du wie gesagt aus REDIRECT_URL.

Ob ich an $_POST dann über PHP herankomme, weiß ich auch noch nicht.

Problemlos.

Das ist das Ergebnis des Tests mit POST:
GET:

Array
(
    [POST_/forms/anfrage_HTTP/1_1] =>
)

Das ist der THE_REQUEST mit ersetzten Leerzeichen, den du gar nicht in der Form benötigst.

$_POST kommt normal an in PHP, $_GET geht leider kaputt, kann man sich aber leicht selber wieder aufbauen.

Unnötig. Siehe oben. Dann bleibt auch der Querystring erhalten.

dedlfix.