Custom Error Page

  • Hi, hab aktuell viele Seite auf J4 mit eigenem Temlpate.

    bisher war es möglich über:

    einen redirect auf eine custom page vorzunehmen. bei mehrsprachigkeit natürlich mit case : de-de .. oder en... usw.
    aktuell siehe oben. bei falscher url wird einfach die startseite aufgerufen und nicht die /error-404.html.
    was wurde im gegensatz zu j3 hier verändert? wo liegt mein fehler?


    Freue mich auf rückmeldung.

  • Hast vielleicht in der .htaccess zusätzlich was drinnenstehen?

    header("HTTP/1.0 404 Not Found");

    Vielleicht die Zeile rausnehmen? Das redirect prüft, ob bereits ein header gesetzt wurde. Nur dann geht sie den gewünschten Weg. Die $app-Zeile setzt obige Zeile dann sowieso.


    In meiner error.php steht nicht mehr als

    Code
    defined('_JEXEC') or die;
    
    use Joomla\CMS\Factory;
    
    $app = Factory::getApplication();
    $app->redirect('/error-404.html', 404);

    und es funktioniert unter Joomla 4, wo die

    Code
    error-404.html

    direkt im Joomla-Verzeichnis liegt.

  • Wenn sich das Joomla in einem Unterordner der Domain befindet, bin ich mir fast sicher, dass mindestens der Pfad

    '/error-404.html'

    nicht stimmt. Sollte dann eher sein:

    Code
    '/joomla/error-404.html'

    Generell ist das nicht optimal beim Testen in Unterordnern einer Domain zu arbeiten. Besser ist bspw. eine Subdomain, die auf seinen eigenen Ordner zeigt, außerhalb der Hauptdomain.


    Auch, wenn man die RewriteBase in der .htaccess korrekt setzt, also in deinem Fall

    Code
    RewriteBase /joomla/

    macht man es sich mit Unterordner manchmal schwerer als es sein müsste.

  • Ich habe mal bei meiner Seite geschaut und das ist der Inhalt meiner error.php


    PHP
    defined('_JEXEC') or die;
    
    
    header("HTTP/1.0 404 Not Found");
    echo file_get_contents(JURI::root().'index.php?option=com_content&view=article&id=26');


    Die id=26 ist die ID des Beitrag, in dem der Inhalt "Sorry ..." steht. Keine weitere Umleitung o.ä. in der htaccess dazu aktiviert.

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • Ich vermute mal. dass es an der .htaccess liegt. Habe meine gerade unter J4 im Cassiopeia getestet und funktioniert einwandfrei. Habe hier auch keine htaccess aktiv.

    Wenn ich bei mir eine falsche Seite aufrufe, kommt in der Netzwerkanalyse als erstes die 404 und anschließend die Weiterleitung.

    Wenn ich den o.g. Link mit kontaaaakt.html aufrufe, kommt keine 404, sondern gleich 200 und die Startseite. Da liegt die Vermutung schon sehr nahe, dass es vorher schon umgeleitet wird.

    Am besten vielleicht mal die htaccess deaktivieren und falls das Plugin für Umleitungen aktiv ist auch dieses deaktivieren.

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • Guter Mann. Alles an SEO deaktiviert, dann wird weitergeleitet. leider gibts dann weder schöne urls noch die error page. da diese unter /error-404.html sein sollte. ( sp-pagebuilder mit hidden-navigation... ) :D absolut klasse. hoffe dass bald ein update dazu kommt. wenn sef nicht funktioniert ist das ja käse.


    hab 5 Webseiten kurz vor launch - bitte um hilfe. muss ja iwie gehen. entweder das joomla team oder ein workaround. :)

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: Ein Beitrag von DD Webentwicklung mit diesem Beitrag zusammengefügt.

  • Es sieht sehr stark danach aus, dass in der htaccess etwas drin ist, was dazwischen funkt.


    Ich würde es so wie in #6 bereits geschrieben, das erst einmal "sauber" in einer Subdomain bringen. Dann nicht die jetzige htaccess, sondern die Core htaccess aktivieren und testen. Anschließend SEF einschalten.

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • htaccess ist eine standard joomla. daran liegts nicht. oder es ist was drin was das so verhindert, was mich wundern würde.
    die error php greift ja grundsätzlich auf iwelche template dateien zu, wie in der standard cassiop. ja auch. da ich nicht mit beiträgen arbeite.. wäre das ja ein rückschritt...

  • Oder gibt es irgendwo eine Lösung bereits?

    Frage ist halt: Lösung für was?


    Ich habe jetzt nochmals in meine error.php des Cassiopeia eingetragen, nachdem ich deine Code-Fragmente hier mit denen im Issue-Tracker (dort unvollständig und nicht nachvollziehbar) zusammengeführt habe:

    und das funktioniert ohne Probleme wie von dir gewünscht in Joomla 4. Und der Tracker ist nur für Joomla-4-Core-Issues gedacht.


    Es läuft also darauf hinaus, dass es an SPPagebuilder ODER dem Provider liegt ODER an bereits oben erwähnten "ungünstigen" Konditionen auf deiner Seite (Unterordner statt saubere Subdomain).

    Noch dazu ergänzt: Wenn du in einem Unterordner arbeitest, vererbt sich die .htaccess des drüber liegenden Ordners auch auf deine Joomla-4-Installation im Unterordner.


    Kurz: Ich kann meinen Text hier jetzt auch im Tracker melden "not confirmed" oder du musst dich eben an SP oder den Provider wenden, die vielleicht eine bescheuerte 404-Umleitung ausführen NACHDEM du einen 404-Header abgeschickt hast. Auch das gibt es.


    Das Argument, dass es unter Joomla 3 funktioniert zählt halt nicht, weil es halt Joomla 4 ist und dein selbst gestrickter Code oben nie im Joomla-Core war. Einige meiner eigenen Code-Erfindungen funktionieren unter Joomla 4 nicht mehr und ich muss sie eben den Gegebenheiten anpassen.


    Genug Input hast du ja oben bekommen. Niemand braucht heute mehr eine Umleitung auf *.html. Man kann das alles z.B. via error.php abwickeln; auch Mehrsprachigkeit mit eigenen Sprach-Strings. Wenn allerdings auch die unverändert (= aus purem Joomla) auf die Startseite umgeleitet wird, weißt du, dass es NICHT an Joomla liegt.


    Mein erster Schritt in solchen Fällen ist, die error.php vom Template umzubenennen (= deaktivieren), damit garantiert die von Joomla gezogen wird (templates/system/error.php). Wenn auch die "komisch" agiert, muss ich halt die Header debuggen oder baue sie andernfalls vorsichtig schrittweise um.


    Du fängst halt irgendwie am falschen Ende an.

  • wow schlechten tag heute gehabt?
    Die Seiten liegen seit jahren beim gl provider. somit fällt das raus. sp pagebuilder hat auch nichts mit dem routing zu tun. Falls das richtig gelesen hast geht die blog detail-seite (ohne sp pagebuilder ) per redirect auf /error-404 korrekt. die blog seite an sich (ohne sp pagebuilder ) hingegen nicht. somit doch core? hm?
    eine umleitung auf eine schön gestaltete 404 braucht heute doch fast jeder.. nicht niemand? :D
    Aber gut. Danke für nichts :D

  • Ich habe ergänzt auf https://github.com/joomla/joom…70#issuecomment-972770118

    eine umleitung auf eine schön gestaltete 404 braucht heute doch fast jeder.. nicht niemand?

    Die error.php kann schon länger "schön" und absolut individuell und in 1 Datei mehrsprachig gestaltet werden. Cassiopaia zeigt das auch so, dass man sich dort einiges ableiten kann.

    Falls das richtig gelesen hast geht die blog detail-seite (ohne sp pagebuilder ) per redirect auf /error-404 korrekt. die blog seite an sich (ohne sp pagebuilder ) hingegen nicht

    Wenn du dir angewöhnen würdest verständliche Testanweisungen zu schreiben und vollständige Codes, mit Beispiellinks, könnte man vielleicht verstehen, was dieser Satz zu bedeuten hat. Warum sollte eine Blogseite denn auf eine Fehlerseite umleiten? Eine falsche URL ist keine Blog-Seite

    wow schlechten tag heute gehabt?

    Wunderst du dich? 20 Posts und du hängst an dem "Hat immer funktioniert". "Unterordner kein Problem". "Mag ich nicht".


    Bei mir funktionieren deine Umleitungen mit dem Code aus https://github.com/joomla/joom…70#issuecomment-972770118 in ALLEN Fällen. Hab ja nun genug ausprobiert.

    Aber gut.

    Super. Dann ist die Sache ja erledigt.