+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Eigene 404-Fehlerseite in Joomla 2.5 mit korrektem Statuscode

  1. #1
    bvp
    bvp ist offline
    Neu an Board
    Registriert seit
    03.07.2015
    Beiträge
    44
    Bedankte sich
    8
    1 Danksagung in 1 Beitrag

    Frage Eigene 404-Fehlerseite in Joomla 2.5 mit korrektem Statuscode

    Ich möchte in meinem Joomla 2.5.28 eine eigene Fehlerseite einrichten.

    Diese Fehlerseite soll
    - mehrsprachig sein (meine Seite ist auf DE und EN verfügbar),
    - designtechnisch zu 100% in die Seite integriert sein
    - und auf jeden Fall den korrekten HTTP-Statuscode (404) zurückgeben.

    Mein bisheriger Ansatz:
    - Einen Artikel mit Alias "error-404" angelegt (einmal für DE und einmal für EN)
    - Diese beiden Artikel jeweils mit einem Schattenmenü verlinkt
    - error.php aus templates/system nach templates/meintemplate kopiert
    - eigene error.php nach Anweisung "$this->direction = $doc->direction;" und vor Beginn des HTML-Codes um folgendes erweitert:
    PHP-Code:
    if (($this->error->getCode()) == '404') {
      
    header("HTTP/1.0 404 Not Found");
      
    $errlang strtolower(substr($this->language02));
      if (
    $errlang == 'de')
        
    $errlang '';
      else
        
    $errlang .= '/';
      echo 
    file_get_contents(JURI::root().'/'.$errlang.'error-404');
      exit;

    EDIT: PHP-Code wurde angepasst.

    - .htaccess im Rootverzeichnis "/" (Joomla liegt in "/cms/") um folgendes erweitert:
    Code:
    # Fehlerseite
    ErrorDocument 404 /cms/error-404/
    EDIT: htaccess-Code wurde angepasst.

    Via https://httpstatus.io/ kann ich mir den korrekten Statuscode ausgeben lassen. Getestet habe ich folgende URLs:

    http://example.com/xxx
    http://example.com/xxx/xxx
    http://example.com/cms/xxx
    http://example.com/cms/en/xxx
    http://example.com/cms/xxx/yyy
    http://example.com/cms/en/xxx/yyy

    Alle haben Statuscode 404, ohne unnötige Weiterleitungen. Also alles korrekt.

    Nun zu meinen Problemen:

    1.) Die erste URL in der Auflistung führt nicht zu meiner eigenen Fehlerseite (dem Artikel), sondern zur Startseite. In der URL steht dann "http://example.com/xxx", also "xxx" statt "cms" bzw. "cms/xxx". Das mit der URL wäre mir noch egal, aber ich möchte die Fehlerseite sehen.

    2.) Die zwei URLs mit "en" führen leider auch zur deutschen Seite. Wenn ich auf der deutschen bin, kann ich aber über mein Sprachauswahlmenü die englische aktivieren, also korrekt den Sprachen zugewiesen sind die Seiten.

    Kennt sich jemand gut damit aus und kann mir einen Tipp geben? Meine .htaccess sieht vermutlich relativ "verrückt" aus, aber ich habe mit keinen anderen Anweisungen die jetzigen guten Ergebnisse erhalten (die zwei Probleme sind im Vergleich zu anderen relativ harmlos).

    EDIT: Durch Anpassung von htaccess und PHP-Code hat sich eins von zwei Problemen erledigt.
    Geändert von bvp (18.03.2016 um 15:05 Uhr) Grund: Neue Erkenntnisse

  2. #2
    Wohnt hier Avatar von WebWorker Berlin
    Registriert seit
    03.02.2013
    Ort
    Berlin
    Beiträge
    2.400
    Bedankte sich
    435
    Erhielt 502 Danksagungen
    in 447 Beiträgen

    Standard

    Update doch bitte erstmal auf Joomla 3.4.8 bevor Du damit anfängst. An einer ausgelaufenen Version weiterhin arbeiten macht nicht wirklich Sinn. Denn die nächst Sicherheitslücke in Joomla 2.5 wird bestimmt nicht mehr geschlossen.

  3. #3
    Wohnt hier Avatar von Re:Later
    Registriert seit
    21.04.2014
    Ort
    Berlin
    Beiträge
    4.839
    Bedankte sich
    132
    Erhielt 1.886 Danksagungen
    in 1.681 Beiträgen

    Standard

    Versteh auch unter 3.4.8 den ganzen Aufwand nicht.
    Die joomlaeigene error.php arbeitet mehrsprachig. Oder täusch ich mich?
    Ist ebenso wie die index.php vom Aussehen her anpassbar (selbe CSS laden, etc. pp.).
    Sendet einen 404. Ob nun die error.php selbst oder Joomla irgendwo zuvor. Keine Ahnung.

  4. #4
    bvp
    bvp ist offline
    Neu an Board
    Registriert seit
    03.07.2015
    Beiträge
    44
    Bedankte sich
    8
    1 Danksagung in 1 Beitrag

    Standard

    Ein Update auf Joomla 3.x ist mit zuviel Aufwand verbunden (ich rede dabei ausschließlich vom Template). Die nächste Version der Website wird komplett ohne Joomla erstellt, weil ein CMS einfach zuviele Einschränkungen hat. Bis dahin müssen wir bei 2.5 bleiben.

    Die error.php ist meines Wissens nach nicht wie die index.php anpassbar. Sowas wie
    HTML-Code:
    <jdoc:include type="modules" name="position1" />
    klappt nicht und auch
    PHP-Code:
    if ( $this->countModules'position3' ) ) { 
    führt zu Fehlern.

    Oder geht das doch irgendwie?

    Das Problem wäre auch, dass ich jede Änderung an der index.php nochmal an der error.php machen muss.

    Ein Artikel spart den ganzen Aufwand.

    Und bei einem Aufruf von example.com/xxx greift logischerweise nicht die error.php, weil Joomla in /cms/ installiert ist.

  5. #5
    bvp
    bvp ist offline
    Neu an Board
    Registriert seit
    03.07.2015
    Beiträge
    44
    Bedankte sich
    8
    1 Danksagung in 1 Beitrag

    Standard

    Nach einem Monat erlaube ich mir nochmal eine Nachfrage. Kennt ihr vielleicht ein gutes "404-Tutorial" für Joomla? Es gibt zwar hunderte, aber das perfekte habe ich nicht gefunden. Meist besteht das Problem, dass eben kein direktes und ausschließliches 404 zurückgegeben wird.

    EDIT: Eines meiner beiden Probleme konnte ich lösen. Ich habe mein erstes Posting dementsprechend editiert!
    Geändert von bvp (18.03.2016 um 14:56 Uhr)

  6. #6
    Joomla! Core Developer
    Registriert seit
    31.08.2006
    Beiträge
    272
    Bedankte sich
    14
    Erhielt 198 Danksagungen
    in 89 Beiträgen

    Standard

    Die error.php liefert dir in der Tat nicht alle "Features" von deinem normalen Template. Aber das ist eben gerade der Sinn und Zweck der error.php, denn wenn diese aufgerufen wird, weist du eben nicht, ob deine Webseite überhaupt noch soweit funktioniert, dass z.B. ein Beitrag angezeigt werden kann. Soweit ich dich verstehe, ist die Fehlerseite doch sowieso ein statischer Inhalt. Dann pack den einfach in die error.php und gut ist.
    Ex-Joomla! Core Developer

    Ich gebe keinen Individualsupport. Mails, PMs, etc. mit Supportanfragen werden ignoriert.

  7. #7
    bvp
    bvp ist offline
    Neu an Board
    Registriert seit
    03.07.2015
    Beiträge
    44
    Bedankte sich
    8
    1 Danksagung in 1 Beitrag

    Standard

    Aber es besteht doch nur noch das Problem, dass http://example.com/xxx nicht die Fehlerseite aufruft. Ich gehe nicht davon aus, dass die error.php, die ich ja im Prinzip trotzdem verwende, daran was ändern würde.

    Zur Erinnerung: Joomla ist unter "/cms/" installiert, der fehlerhafte Aufruf passiert aber bei "/".

  8. #8
    Joomla! Core Developer
    Registriert seit
    31.08.2006
    Beiträge
    272
    Bedankte sich
    14
    Erhielt 198 Danksagungen
    in 89 Beiträgen

    Standard

    Ich verstehe dein Problem nicht so wirklich, allerdings bleibt mein Hinweis von oben weiter korrekt. Du machst in deinem Code ja nichts anderes, als beim Aufruf einer Fehlerseite eine normale Seite deiner Webseite aufzurufen, den Output zu speichern und an den originalen Aufrufer zurück zu geben. Wenn nun aber gerade das schon nicht mehr funktioniert, hast du dir mit der Lösung effektiv mal eben deinen eigenen Server abgeschossen, denn der Aufruf der error.php ruft deine Webseite auf, welche wiederum wegen eines allgemeinen Fehlers die error.php aufruft und die ruft wiederum deine Webseite auf und die ruft wieder deine error.php auf und .... Ich hoffe du verstehst, was ich meine. Du hoffst darauf, dass deine Webseite und speziell die Fehlerseite noch funktioniert, wenn du eine Fehlerseite ausgeben willst. Das ist aber eben gerade nicht garantiert. Deswegen ist die von dir genutzte Lösung die denkbar schlechteste.
    Ex-Joomla! Core Developer

    Ich gebe keinen Individualsupport. Mails, PMs, etc. mit Supportanfragen werden ignoriert.

  9. #9
    Gehört zum Inventar
    Registriert seit
    06.03.2013
    Ort
    /dev/random
    Beiträge
    5.987
    Bedankte sich
    129
    Erhielt 2.228 Danksagungen
    in 2.108 Beiträgen

    Standard

    @hackwar
    Er meint wohl, dass es so ist als ob man http://www.example.com/index.php?xxxx aufruft, was ja die Startseite anzeigt. Hätte dann was mit der .htaccess zu tun.
    Gruß FINWICK
    ↶ Danke Button nutzen, wenn es geholfen hat - Kein Support via PN - Tipps & Tricks - JPlugger - URL Shortener - NDE

  10. #10
    bvp
    bvp ist offline
    Neu an Board
    Registriert seit
    03.07.2015
    Beiträge
    44
    Bedankte sich
    8
    1 Danksagung in 1 Beitrag

    Standard

    wegen eines allgemeinen Fehlers die error.php aufruft
    Ich denke, du redest von Fehlercodes != 404, z. B. 500. Ich frage den Fehlercode im PHP-Code ab und nur bei 404 rufe ich die andere Seite auf.

    Aber ich werde mal lokal testen, ob bei einem Nicht-Vorhandensein meines 404-Artikels wirklich so eine Art Endlosschleife passiert. Ich rechne mit Nein, aber ich werde es testen.

    Hätte dann was mit der .htaccess zu tun
    Wäre auch meine Vermutung, wobei ich nicht ausschließen möchte, dass es nur im Zusammenhang mit Joomla dieses Verhalten gibt. Soll heißen, die .htaccess an sich könnte durchaus korrekt sein.

+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein