Hello,
ich möchte alle Requests umleiten, für die es keine Ressource gibt
Ich hoffe, dass es so richtig ist und nicht doch irgendwann einen zyklischen Verlauf erzeugt:RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-fBist 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. Symlinks werde ich gleich nochmal ausprobieren.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.
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. Das funktioniert zumindest für die GET-Parameter. Ob ich an $_POST dann über PHP herankomme, weiß ich auch noch nicht.
Wenn das nicht klappt, war es wieder einer der berüchtigten Irrwege der EDV :-P
Das ist das Ergebnis des Tests mit POST:
------
GET:
Array
(
[POST_/forms/anfrage_HTTP/1_1] =>
)
POST:
Array
(
[data] => Array
(
[name] => Fischers Fritze
[ort] => Sägemühle
)
[btn] => Array
(
[anfrage] => Frage senden
)
)
-----
$_POST kommt normal an in PHP, $_GET geht leider kaputt, kann man sich aber leicht selber wieder aufbauen. Man muss dann bei der Dekodierung des Request-Strings nur daran denken, dass man mb_parse_str() benutzt bei utf-8 Seiten und nicht pars_str().
Glück Auf
Tom vom Berg