Zitat von
RainerG
Warum nutzt Du hierfür in der Contao-Seitenstruktur nicht die entsprechenden Seitentypen?
Oder ist das für eine mehrsprachige Seite nicht geeignet?
Der entsprechenden Seitentypen von Contao funktionieren auch mehrsprachig problemlos.
Allerdings greift die Fehlerbehandlung in Contao nur bei Aufrufen mit Dateiendung, also z.B. "irgendwas.html" oder "irgendwas.php".
Wenn jemand die URL ohne Endung aufruft (quasi Verzeichniszugriff), also z.B. "/irgendwas" erscheint das Error-Document das im Server (Regelfall Apache) eingetragen ist, die man über die .htaccess steuern kann.
Behandeln kann man das mit so einer error.php wie sie Sioweb beschrieben hat.
Nachteil: das ganze ist nicht mehr ganz dynamisch, da man die URLs der Fehlerseiten dort als Weiterleitungs-URL eintragen muss. Wenn sich diese ändert oder eine neue Sprache hinzukommt muss die error.php auch wieder angepasst werden.
Man kann die Seitenaliase auch aus Inserttag und ID generieren lassen (+ replaceInsertTags), aber ganz dynamisch wird man das wahrscheinlich nicht hinbekommen.
------
Es gibt auch noch einen anderen Weg, der vielleicht technisch nicht ganz korrekt ist, aber seinen Zweck größtenteils erfüllt und für nicht-Programmierer geeignet ist:
Vorarbeit/Bedingungen:
Jeder Seitenbaum (also jede Sprache) benötigt eine eigene Fehlerseite vom Typ "404 Seite nicht gefunden". Getestet ist das ganze mit der Option "Sprache zur URL hinzufügen" also domain.tld/sprachcode/alias.html)
Vorgehen:
Man trägt in der .htaccess ein ErrorDocument mit einem Alias ein, der im Contao nicht angelegt ist (Wichtig! Dieser Alias darf in keinem Contao-Seitenbaum eingetragen sein!)
z.B.
Code:
ErrorDocument 404 /error_site.html
Nun leitet der Webserver bei Aufruf von "/irgendwas" auf die URL mit "error_site.html" weiter. Jetzt hängt die Dateiendung dran und Contao klinkt sich ein, prüft ob es diesen Alias gibt, stellt fest dass es diesen nicht gibt und zeigt die als Seitentyp "404 Seite nicht gefunden" definierte Seite an.
Manko: Contao prüft erneut die Browsersprache und springt dann zu der Error-Seite in der jeweiligen Browsersprache. Leider springt dann auch die komplette Seite zu dieser Sprache. D.h. wenn jemand die Seite im Sprachwechsler auf Französisch switcht, die Browsersprache aber Deutsch ist und es wird eine ungültige URL ohne Dateiendung eingegeben springt die gesamte Seite von Französisch auf Deutsch und es erscheint die deutsche Fehlerseite. URLs mit Dateiendung (also z.B. ein veralteter Direktlink auf eine Seite) ist davon nicht betroffen, da Contao dort die Spracheinstellung nicht verliert.
Dieses Manko muss man dann wohl oder übel schlucken. Dafür wird aber immer eine Contao-Fehlerseite angezeigt.
Lesezeichen