Neuigkeiten:

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

Hauptmenü

Macht es bitte einfacher, eigene rewrite-Engines zu verwenden und mehr

Begonnen von sinni800, 07. August 2014, 11:23:05

« vorheriges - nächstes »

sinni800

Hi,

ich benutze Windows mit IIS8 um mein Mozilo zu hosten.

Es funktioniert, mit Rewrites!

IIS8 hat in der eigenen Rewrite-Engine eine Funktion, um .htaccess Dateien zu importieren und deren Regeln zu nutzen.

Dies funktionierte out of the box in 1.12, ich nahm die .htaccess, passt. Die anderen htaccess Dateien, die den Zugriff auf die Konfig verhinderten, hab ich ersetzt in dem ich keine .conf Dateien zugreifbar machte (404 bei Zugriff, clever!)

In 2.0 jedoch wird die .htaccess nicht mehr zur Verfügung gestellt. Hier funktionierte die 1.12 weiter, jedoch musste ich trotzdem ein paar kleine Tweaks ansetzen.

Erstens ist das neue System für Konfigurationsdateien richtig beknackt, finde ich... Ich musste, um modrewrite anzuforcieren
"modrewrite";s:5:"false"
in
"modrewrite";s:4:"true"
ändern... So was seltsames habe ich lang nicht gesehen, als config-syntax. Ist ja auch erst seit 2.0 so.

Hier wäre eine bitte: Bitte die Option im Einstellungs-Menü irgendwie überschreibbar machen, für Leute die wissen was sie tun!

Aber zu der Konfig: Wieso nicht in einer globalen Konfigvariable schreiben, die als array() aufgeführt ist, ihr benutzt eh Globals? Naja, Globals, die man ohne Nebenwirkungen übrigens nicht von außen anfassen kann. Hab mal die $syntax benutzen wollen um Mozilo Syntax zu interpretieren, das hat die ganze Seite umgeworfen... Musste es neu instanzieren und hab dann herausgefunden dass der Output von Plugins sowieso als Mozilo Syntax interpretiert wird wenn er nicht escaped wird... Hab da keine Plugin Developer manual zu gefunden, gibt's die irgendwo?

Zurück zum Hauptthema.

Jedenfalls musste ich dann realisieren dass Bildlinks nun auf Fehler stießen. Bildlinks, die in Ordner mit Leerzeichen führten. Zu meinem Schrecken musste ich feststellen dass die Kategorie-Namen nun Literal "%20" im Namen hatten, statt Leerzeichen... Wieso? So was macht man doch nicht im Dateisystem! Das ist Internet-URL-Notation! Vorher war es richtig und hat super funktioniert, jetzt müssen Bild-URLs ein "%2520" drin haben um das Prozent zu escapen... Was dann von IIS8 erst mal abgeschossen wird... potentiell gefährliche URL. Hab dann "allow double escaping" angeschaltet, dann ging das.

Nun, die rewrites... Die gingen auch nicht, wenn Leerzeichen in der "Kategorie" drin waren. Stellt sich raus, dass bei Double-Escaping IIS dann "Kategorie Name" und nicht "Kategorie%20Name" an MoziloCMS schickt. Mozilo nimmt das so, findet dann aber nicht die Kategorie, %2520 urls zu generieren und aufzulösen wäre jetzt wirklich konsequent, doch man will nicht die Rückwärtskompatibilität der URLs gefährden... Also jongliert man die URL um, und hier schlägt es doch irgendwie bei IIS fehl, weil der Input im Mozilo anders ist als bei Apache. Mein Vorschlag hier: Es gibt eine kleine Änderung die Apache nicht kaputtmacht und die IIS dort mit "allow double escaping" zum laufen bekommt:

https://github.com/mozilo/mozilo2.0/blob/master/index.php#L125

In dieser Zeile in der index.php kann man eine kleine nicht destruktive Änderung machen. Man ändert sie von

$url_get = str_replace("tmp".URL_BASE,"","tmp".$_SERVER['REQUEST_URI']);
zu
$url_get = str_replace("tmp".URL_BASE,"","tmp". str_replace(" ", "%20", $_SERVER['REQUEST_URI']));

Falls also doch noch irgendwie Leerzeichen reinkommen, schießen wir sie einfach ab!

Als ich übrigens ein Plugin für eine Galerie entwickeln wollte, habe ich rausgefunden, dass nur die Standardgalerie durch galtemplate=true aufgerufen werden kann... Wo ist das überhaupt festgelegt? Es wäre übrigens gut wenn man das "neues Fenster" vs "genau hier die Galerie anzeigen" (Geben Sie an, wie die Galerie geöffnet werden soll?) nicht pro CMS sondern Pro Galerie, im Plugin-Parameter festlegen könnte... Manche will ich vielleicht so, manche so... Mein Galerieplugin zeigt übrigens alle Bilder in einer Tabelle oder fließend nacheinander.

Nach dieser Story möchte ich meine Vorschläge noch mal kurz zusammenfassen:


  • .htaccess file irgendwie zur Verfügung stellen. Vielleicht noch mal mir Rewrites für Nginx, usw.
  • mod_rewrite etwas allgemeiner Formulieren und auf eigenes Risiko aktivierbar machen. Portabilität ist super!
  • Tweak in der index.php einbauen (sollte keine Nebenwirkungen haben, alle Leerzeichen sind eh entschärft), damit IIS-Nutzer keine Probleme haben (und einen Hinweis wegen dem double escaping: http://gehirnwindung.de/post/2009/04/08/IIS-70-und-Plus-in-URLs.aspx damit nicht noch jemand sich den Kopf zerbrechen muss)
  • Die config dateien... Sie sind etwas seltsam, aber wenn man sie nie anfassen musst, okay...
  • Leerzeichen in Kategorien sollten eigentlich keine %20 sein, nicht im Dateisystem. Sie wie in Dateinamen durch _ zu ersetzen wäre konsequenter.
  • Developer Guide für einfache Fragen wie "wie lasse ich mein Plugin CMS-Syntax interpretieren" oder "wie lasse ich es NICHT interpretieren damit mir keiner Dreck unterschiebt" oder "was macht $specialchars eigentlich genau mit meinem Inhalt?" (wenn ich da nichts übersehen hab)
  • Eigene Galerie-Scripts in das galtemplate=true einsetzen können
  • "Geben Sie an, wie die Galerie geöffnet werden soll?" im Galeriescript als Plugin-Parameter beim Einsetzen festlegen