Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

"mod_rewrite" ohne mod_rewrite

Begonnen von thos, 24. Februar 2012, 09:59:38

« vorheriges - nächstes »

thos

Hallo zusammen,

beim Versuch, eine eigene Fehler-Seite zu erstellen, bin ich auf eine interssante Eigenschaft gestoßen:

Offensichtlich ist es so, daß ein fehlerhafter Request (der Teil hinter der Domain) nach wie vor im $_SERVER['REQUEST_URI'] landet - genauso wie bei der Umleitung durch mod_rewrite; d.h. ein Skript kann an dieser Stelle nicht unbedingt feststellen, warum es aufgerufen wurde.
Das führt zur folgenden simplen Lösung in der .htaccess-Datei:


errordocument 404 /index.php

Im mozilo/admin/Einstellungen muß nun nur noch (trotz nicht vorhandener mod_rewrite-Unterstützung!) der Haken bei "mod_rewrite aktivieren" gesetzt werden....
Letzteres ist allerdings nur deshalb notwendig, weil der zugehörige Eintrag in der main.conf zwei(!) Dinge steuert:
1. Die Erzeugung der Suchmaschinen-Links
2. Die korrekte Auswertung in der Funktion "getRequestParam()"

Letzteres sollte IMHO unabhängig von der Einstellung in der main.conf sein; unabhängig davon und unabhängig vom Vorhandensein von "mod_rewrite" auf dem Server sollte das Script in der Lage sein, den übergegebenen Request zu analysieren. Schließlich sind so schöne Links auch dazu geeignet, von Hand eingetippt zu werden, anstatt so komplizierter Sachen wie ...?cat=...&page=...

Noch ein paar Ergänzungen:

- Getestet habe ich das hier local unter XAMPP

- Ein Problem auf dem Server könnte sein, daß die Fehler-Log-Datei des Apache überquillt und sich der Server-Admin wundert/beschwert oder was auch immer...

- Der Pfad zum errordocument muß absolut ausgehend von DomainRoot angegeben werden, d.h. wenn sich mozilo im Unterverzeichnis "moziloCMS" befindet, muß in der .htaccess (in diesem Unterverzeichnis) stehen

errordocument 404 /moziloCMS/index.php
- Das ganze funktioniert natürlich nicht nur für 404-Fehler (--> Seite nicht gefunden)

- in der Original-.htaccess von mozilo findet sich ein kleiner Bug:

....
RewriteRule .html$ index.php [QSA,L]

Diese RewriteRule sorgt dafür, daß alles was mit "beliebiger Buchstabe"+html endet, auf die index.php umgeschrieben wird; gemeint war allerdings wohl eher das hier:

....
RewriteRule ..html$ index.php [QSA,L]

d.h. alles was mit "beliebiger Buchstabe"+Punkt+html endet....

Darüber hinaus verläßt sich dann die Funktion getRequestParams(), daß mod_rewrite alles schon ordentlich gerichtet hat, und schmeißt unbesehen die letzten 5 Buchstaben (".html" z.B....) weg.



Gruß aus dem Rheinland


Thomas