AMR Modul gibt bei Fehlerseite keinen 404 Header aus

bertolo
Beiträge: 76
Registriert: Fr 5. Sep 2003, 09:07
Wohnort: Salzburg
Kontaktdaten:

AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von bertolo » Di 24. Sep 2013, 11:41

Hallo Contenido-Gemeinde,

ich bin bei der Suchmaschinen-Optimierung eines Kundenprojektes auf das Problem gestoßen,
dass die Fehlerseite von div. Suchmaschinen-Analysetools nicht erkannt wird.

Dies liegt daran, dass beim Aufruf der Fehlerseite kein 404 Header, sondern ein HTTP/1.1 304 Not Modified Header ausgegeben wird, wie ich es mit dem Firefox Plugin "Live HTTP headers" überprüft habe.

Um diesen Fehler zu korrigieren, bin ich den Anweisungen aus diesem Forum-Beitrag gefolgt http://forum.contenido.org/viewtopic.php?f=62&t=32203 und habe in die front_content.php meines Clienten unter

Code: Alles auswählen

// error page
$aParams = array (
    'client' => $client, 'idcat' => $errsite_idcat[$client], 'idart' => $errsite_idart[$client], 
    'lang' => $lang, 'error'=> '1'
);
$errsite = 'Location: ' . Contenido_Url::getInstance()->buildRedirect($aParams);
diesen Code integriert:

Code: Alles auswählen

if ($error == 1) {
    header("HTTP/1.0 404 Not found");
}
Auch bin ich den Empfehlungen weiter unten im Forum-Beitrag gefolgt und habe ebenfalls die "contenido/plugins/mod_rewrite/includes/front_content_controller.php" entsprechend geändert in:

Code: Alles auswählen

if ($iRedirToErrPage == 1 && (int) $client > 0 && (int) $lang > 0) {
   
        global $errsite_idcat, $errsite_idart;
      $idart = $errsite_idart[$client];
      header("HTTP/1.0 404 Not found");
   
    }
Darüber hinaus habe ich die

Code: Alles auswählen

.htaccess
durch den Code

Code: Alles auswählen

# - For documentation see: http://www.htaccessbasics.com/404-custom-error-page/
ErrorDocument 404 /fehlerseite/fehlerseite.html
Zu Beginn der .htaccess ergänzt und sogar eine statische HTML-Seite in dem o.g. Verzeichnis erstellt.

:arrow: Leider hilft das alles nichts!
Ich habe Contenido 4.8.18 installiert und das entsprechende AMR Modul 0.5.5 dazu.

Wie bekomme ich es trotzdem hin, dass der Server endlich die gewünschten 404 ausspuckt?
Bin leider ratlos :|
Besten Dank für Eure Hilfe.
LG aus Salzburg, Bertolo
Zuletzt geändert von bertolo am Do 3. Okt 2013, 14:17, insgesamt 1-mal geändert.
:: webdesignetc.de ::
Salzburg / Austria

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von Faar » Di 24. Sep 2013, 12:47

bertolo hat geschrieben: Um diesen Fehler zu korrigieren, bin ich den Anweisungen aus diesem Forum-Beitrag gefolgt http://forum.contenido.org/viewtopic.php?f=62&t=32203 und habe in die front_content.php meines Clienten unter

Code: Alles auswählen

// error page
$aParams = array (
    'client' => $client, 'idcat' => $errsite_idcat[$client], 'idart' => $errsite_idart[$client], 
    'lang' => $lang, 'error'=> '1'
);
$errsite = 'Location: ' . Contenido_Url::getInstance()->buildRedirect($aParams);
In dieser Variablen steht dann lediglich der Pfad zur Fehlerseite, aber es fehlt die Headerinformation für 404.
Das Problem ist, dass hier nicht header($errorsite) steht, sondern lediglich die Variable mit dem String gefüttert wird, der irgendwo in der Folge dann (vermutlich) an den Header übergeben wird.
Meiner Meinung nach müsste der Aufbau so sein:

Code: Alles auswählen

header('Status: 404 Not Found');
header($errsite);
Daher klappt das da unten im Zweifel nicht, weil zum einen die Frage ist, ob es die Variable $error so überhaupt gibt und weil zu viele Zwischenschritte bestehen, bevor die Seite tatsächlich weitergeleitet wird.
Ich würde daher eher dort suchen, wo buildRedirect() als Funktion/Methode drin steht und die Weiterleitung tatsächlich passiert.
Zudem könnte der Header hier bereits gesendet worden sein, denn die Seite wurde ja aufgerufen und dabei wird der Header schon gesendet.
Drum funktioniert das im Zweifel dann nicht mehr aber hiermit kann man prüfen, ob er schon gesendet wurde:
http://www.php.net/manual/de/function.headers-sent.php
diesen Code integriert:

Code: Alles auswählen

if ($error == 1) {
    header("HTTP/1.0 404 Not found");
}
Und hier unten beim AMR weiß man auch nicht, ob hier tatsächlich header($errorsite); stattfindet, oder lediglich die Variablen gefüttert werden.
Auch bin ich den Empfehlungen weiter unten im Forum-Beitrag gefolgt und habe ebenfalls die "contenido/plugins/mod_rewrite/includes/front_content_controller.php" entsprechend geändert in:

Code: Alles auswählen

if ($iRedirToErrPage == 1 && (int) $client > 0 && (int) $lang > 0) {
   
        global $errsite_idcat, $errsite_idart;
      $idart = $errsite_idart[$client];
      header("HTTP/1.0 404 Not found");
   
    }
.htaccess hilft nur, wenn man einen falschen Pfad aufruft, aber bei CMS wird ja alles intern geregelt, sowie einmal die front_content.php aufgerufen wurde, folglich ist der Pfad niemals falsch, solange das CMS nicht 404 ausgibt.
Praktisch könnte intern alles was keinem gültigen PFad zugewiesen werden konnte, einer Fehlerseite zugeordnet werden, somit findet die Anfrage an das CMS immer eine Seite, also niemals 404.
Das .htaccess funktioniert wohl dann am besten, wenn jemand front_index.php aufruft.
Das AMR .htaccess ist meistens so programmiert, dass alle falschen Anfragen bei der front_content.php landen, also niemals ein echtes 404 vom Server erzeugt wird.
Darüber hinaus habe ich die

Code: Alles auswählen

.htaccess
durch den Code

Code: Alles auswählen

# - For documentation see: http://www.htaccessbasics.com/404-custom-error-page/
ErrorDocument 404 /fehlerseite/fehlerseite.html
Zu Beginn der .htaccess ergänzt und sogar eine statische HTML-Seite in dem o.g. Verzeichnis erstellt.
:arrow: Leider hilft das alles nichts!
Eben.
Wie bekomme ich es trotzdem hin, dass der Server endlich die gewünschten 404 ausspuckt?
Meines Wissens ist das dem Contenido Team bekannt und sollte eigentlich in 4.8.19 gelöst werden sein.
Ansonsten mal schauen, ob Du den Ort findest, wo header($errsite); tatsächlich aufgerufen wird.
Direkt davor dann

Code: Alles auswählen

if ($error == 1) {
header("HTTP/1.0 404 Not found");

oder 

header('Status: 404 Not Found');
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von Spider IT » Di 24. Sep 2013, 17:59

Hallo ihr beiden,
Faar hat geschrieben:

Code: Alles auswählen

if ($error == 1) {
header("HTTP/1.0 404 Not found");

oder 

header('Status: 404 Not Found');
sendet niemals ohne zu prüfen HTTP/1.0, denn wenn HTTP/1.1 genutzt wird funktioniert das nicht, produziert evtl. sogar einen Fehler.

Gruß
René

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von Faar » Di 24. Sep 2013, 22:46

Sorry,
hatte das nur mit Copy&Paste übernommen.
:oops:
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

bertolo
Beiträge: 76
Registriert: Fr 5. Sep 2003, 09:07
Wohnort: Salzburg
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von bertolo » Mi 25. Sep 2013, 14:28

Hm...

vielen Dank für die Antworten. Soweit ich nun verstanden habe sorgt das AMR Modul dafür,
dass einfach immer - egal was angefragt wird - eine gültige Seite erzeugt wird, weshalb
selbst die Fehlerseite gar keine Fehlerseite ist, sondern letztendlich eine gültige Seite,
als Fehlerseite getarnt.

Und dass man eigentlich bloss die Stelle irgendwo in Contendio bzw. im AMR Modul
finden müsste, an der der Seitenheader erzeugt wird, sodass man dort eingreifen
und den Header auf "404" umprogrammieren kann, sobald AMR die Fehlerseite
aufrufen will (sprich: $error == 1 ist.)

Nur: wo ist die besagte Stelle?

Denn leider gibt es meiner Kenntnis nach auch keine Contenido Version 4.8.19, in
welcher dieser Bug behoben sein soll... :(

Tappe nach wie vor im Dunkeln. Wer erleuchtet mich? :idea:
:: webdesignetc.de ::
Salzburg / Austria

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von Faar » Mi 25. Sep 2013, 16:46

Schau Dir mal die front_content.php im /cms Verzeichnis an.

Dort steht ab Zeile 254:

Code: Alles auswählen

$errsite = 'Location: ' . Contenido_Url::getInstance()->buildRedirect($aParams);

if($error == 1) {
    header("HTTP/1.0 404 Not found");
}
Aber das funktioniert scheints nicht so recht, warum auch immer.

Aber weiter unten steht dann ab Zeile 345:

Code: Alles auswählen

                    if ($error == 1)
                    {
                        echo "Fatal error: Could not display error page. Error to display was: 'No start article in this category'";
                    }
                    else
                    {
                        header($errsite);
						exit;
Und hier wird nun endlich die Fehlerseite $errorsite aufgerufen, aber ohne dicht darüber 404 auszugeben.
So ganz weiß ich noch nicht was davor alles passiert, aber mir scheint, dass $error == 1 gar nicht zur Fehlerseite führt, sondern diesen Fatal Error ausgibt!
Und das dann aber weiter oben in Zeile 257 mit HTTP 404.

Nur wenn $error != 1 ist, also false oder 0, dann wird auf die Fehlerseite weiter geleitet.
Jedoch ohne Header 404.
Folglich müsste man den auch noch hier in die Zeile direkt über 351 eintragen, aber mit http 1.1 wie René anmerkte.
Könnte dann funktionieren.

VG,
Frank
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von Spider IT » Mi 25. Sep 2013, 16:59

Faar hat geschrieben:aber mit http 1.1 wie René anmerkte.
Nein, das habe ich nicht gesagt.
Was ich gesagt habe ist, dass man prüfen sollte, ob der Server HTTP 1.0 oder 1.1 ausgibt, und den Header daran anpassen.
Aber wenn man Status ausgibt, dann muss man auch nichts prüfen.

Code: Alles auswählen

header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");
header("Status: 404 Not Found");
$_SERVER['REDIRECT_STATUS'] = 404;
(ob die letzte Zeile tatsächlich was bringt weiß ich nicht)

Übrigens, header($errsite); kommt insgesamt 6 x vor.
Ich habe mal testweise bei allen 6 Aufrufe meinen Code (oben) davor gesetzt, aber es kommt für den falschen Link trotzdem ein 302 (und danach ein 200 für die Fehlerseite von Contenido).

Gruß
René

bertolo
Beiträge: 76
Registriert: Fr 5. Sep 2003, 09:07
Wohnort: Salzburg
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von bertolo » Do 26. Sep 2013, 08:35

Oooops,

das ist ja direkt etwas verrückt - und kommt mir vor wie die Suche nach der Nadel im Heuhaufen.
Also wenn Du, René, alle möglichen Positionen in der front_content.php bereits ausprobiert
hast und Contenido trotzdem keinen Error Header 404 ausgibt, dann scheint sich davor noch
das AMR Modul eingeschaltet zu haben.

Im AMR Modul ist dafür die Datei "contenido/plugins/mod_rewrite/includes/front_content_controller.php"
zuständig, für die es wie oben beschrieben bereits eine Änderungsempfehlung gibt, die aber leider
nicht funktioniert:

Code: Alles auswählen

if ($iRedirToErrPage == 1 && (int) $client > 0 && (int) $lang > 0) {
   
        global $errsite_idcat, $errsite_idart;
      $idart = $errsite_idart[$client];
      header("HTTP/1.0 404 Not found");
   
Ich habe die entsprechende Datei einmal angehängt.
Sehr seltsam, das Ganze... :shock:
Dateianhänge
front_content_controller.php.zip
front_content_controller.php aus dem AMR Modul 0.5.5
(1.71 KiB) 213-mal heruntergeladen
:: webdesignetc.de ::
Salzburg / Austria

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Contenido gibt bei Fehlerseite keinen 404 Header aus

Beitrag von Faar » Do 26. Sep 2013, 09:08

Gebe ich einen Pfad ein, der definitiv nicht stimmt, bekomme ich HTTP 1.1 404.
Gebe ich eine falsche idcat ein, bekomme ich:

Code: Alles auswählen

HTTP/1.1 302 Moved Temporarily
Und zwar auf einem 4.8.18 System, das kein AMR installiert hat.
Folglich kann es auch nicht sein, dass das AMR dran schuld sein soll.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

bertolo
Beiträge: 76
Registriert: Fr 5. Sep 2003, 09:07
Wohnort: Salzburg
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von bertolo » Do 26. Sep 2013, 10:18

Das stimmt, Faar, diese Beobachtung habe ich auch gemacht:
Wenn AMR deaktiviert ist, wird richtigerweise eine 404 Fehlerseite ausgegeben.

D.h., sobald AMR aktiviert ist, funkt es dazwischen und liefert keinen 404 Fehler mehr.
Wir suchen deshalb besser die Stelle im AMR Modul, an der die (interne) Fehlerseite
aufgerufen wird, und geben dort den HTTP 1.1 404 Status mit.

Aber: WO ist das bloss? :|
:: webdesignetc.de ::
Salzburg / Austria

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von Faar » Do 26. Sep 2013, 14:55

bertolo hat geschrieben:Das stimmt, Faar, diese Beobachtung habe ich auch gemacht:
Wenn AMR deaktiviert ist, wird richtigerweise eine 404 Fehlerseite ausgegeben.
So pauschal würde ich das nicht sagen, denn es liegt auch am .htaccess, ob alle Anfragen an die front_content.php geleitet werden oder im Nirvana landen.
Meine Beobachtung ist die, dass ohne dieses AMR .htaccess und ohne AMR lediglich ein 404 erscheint, wenn ich die front_content.php umgehe, z.B. wie domain.tld/irgendwas.php.
Sobald ich aber hinter front_content.php ein falsches idcat oder idart schreibe, leitet mich das System auf die Startseite mit 302.
Danach wird die Startseite angezeigt mit 200.
D.h., sobald AMR aktiviert ist, funkt es dazwischen und liefert keinen 404 Fehler mehr.
Das kann man auch ohne AMR schon haben.
Ich habe den AMR Code nicht vollständig studiert und ich vermute aber, dass AMR gar nicht diesen Code ausgibt, sondern am Ende wieder das Contenido System.
Das AMR schnappt sich die Pfadanteile aus der URL und in den Aliassen nach passenden Wörtern und zieht sich dann aus diesen Tabellen die idcat und idart und gibt das vermutlich an die Contenido Klassen weiter.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

bertolo
Beiträge: 76
Registriert: Fr 5. Sep 2003, 09:07
Wohnort: Salzburg
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von bertolo » Fr 27. Sep 2013, 09:18

Tja, da beisst sich fast die Katze in den Schwanz...

Kann es dann doch eine Lösung geben, wenn man in der front_content.php ansetzt?
Jedenfalls probiert haben wir es dort ja bereits, aber ohne Erfolg.
Ein gültiger 404 Status Header muss doch irgendwie zu bewerkstelligen sein.

:?
:: webdesignetc.de ::
Salzburg / Austria

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von Faar » Fr 27. Sep 2013, 10:28

Einen Test könnte man machen, indem man mal front_content.php kopiert und damit herum spielt und jede Menge header() Ausgaben provoziert.
Vielleicht pfuscht da ja noch was anderes drin.

Sollte es aber damit klappen, dann muss es auch im laufenden Betrieb klappen.
Dann liegt es vermutlich irgendwo innerhalb Contenidos.
Aber auch das müsste sich mit einer eigenen front_content.php irgendwie nachvollziehen lassen, wo was passiert und warum.

Ich hab jetzt momentan leider keine Zeit mehr was daran zu machen, vielleicht nächste Woche wieder.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

bertolo
Beiträge: 76
Registriert: Fr 5. Sep 2003, 09:07
Wohnort: Salzburg
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von bertolo » Di 1. Okt 2013, 13:15

Hallo allerseits,

ich habe am Wochenende mit meinen wenigen PHP Kenntnissen versucht, einen geeigneten 404 Header zu provozieren, bin aber leider nicht weit gekommen. Es ist wohl besser, wenn sich das so ein Contenido Experte anschaut, wie ihr beiden. Wahrscheinlich habe ich etwas übersehen. Wäre doch gelacht, wenn sich das Problem nicht lösen ließe. Ich bin sicher, dass viele unserer Kollegen vor dem selben Problem sitzen und sich über eine Lösung echt freuen würden.

Das, was ich kann, versuche ich dazu beizutragen.
Lets do it!
:: webdesignetc.de ::
Salzburg / Austria

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: AMR Modul gibt bei Fehlerseite keinen 404 Header aus

Beitrag von xmurrix » Mi 2. Okt 2013, 09:23

Hallo zusammen,

das AMR-Plugin gibt selber keinen 404 -Header aus. Die einzige Option, die man hat, ist die Weiterleitung zur Fehlerseite, die in CONTENIDO gesetzt ist, siehe Einstellung "Bei ungültigen Artikeln zur Fehlerseite weiterleiten" im Backend.

Wenn das Plugin zur Fehlerseite weiterleitet, bringt es nichts, wenn man vorher einen "404 Not Found" Header ausgibt, da dies dann durch den folgenden Redirect ungültig wird. Danach gibt Contenido zwar einen 404 aus, was ihr wohl braucht, ist die Ausgabe des Fehlercodes 404 und der Fehlerseite, ohne eine Weiterleitung zur Fehlerseite.

Damit das Funktioniert, könnt ihr folgendes machen:

1. Die Einstellung "Bei ungültigen Artikeln zur Fehlerseite weiterleiten" des AMR-Plugins zurücksetzen, sofern es vorher aktiviert war

2. Überprüft auch den Wert in 'Prozentsatz für "ähnlich klingende" URLs'. Ist dieser niedrig, so versucht das AMR-Plugin bei falschen URLs ähnliche Seiten zu finden, wobei es hierbei den Kategoriebaum vergleicht, nicht den Artikelnamen. Setzt also diese Einstellung auf einen hohen Wert, z. B. 95 oder 100.

3. Öffnet die Datei "contenido/plugins/mod_rewrite/includes/front_content_controller.php" und ändert den Inhalt des Codeblocks, welches für die Fehlerbehandlung zuständig ist (ca. ab Zeile 40), von

Code: Alles auswählen

    $iRedirToErrPage = ModRewrite::getConfig('redirect_invalid_article_to_errorsite', 0);
    // try to redirect to errorpage if desired
    if ($iRedirToErrPage == 1 && (int) $client > 0 && (int) $lang > 0) {
        global $errsite_idcat, $errsite_idart;

        if ($cfgClient['set'] != 'set')	{
            rereadClients();
        }

        // errorpage
        $aParams = array (
            'client' => $client, 'idcat' => $errsite_idcat[$client], 'idart' => $errsite_idart[$client],
            'lang' => $lang, 'error'=> '1'
        );
        $errsite = 'Location: ' . Contenido_Url::getInstance()->buildRedirect($aParams);
        mr_header($errsite);
        exit();
    }
in

Code: Alles auswählen

    $iRedirToErrPage = ModRewrite::getConfig('redirect_invalid_article_to_errorsite', 0);
    // try to redirect to errorpage if desired
    if ($iRedirToErrPage == 1 && (int) $client > 0 && (int) $lang > 0) {
        global $errsite_idcat, $errsite_idart;

        if ($cfgClient['set'] != 'set')	{
            rereadClients();
        }

        // errorpage
        $aParams = array (
            'client' => $client, 'idcat' => $errsite_idcat[$client], 'idart' => $errsite_idart[$client],
            'lang' => $lang, 'error'=> '1'
        );
        $errsite = 'Location: ' . Contenido_Url::getInstance()->buildRedirect($aParams);
        mr_header($errsite);
        exit();
    } elseif ($iRedirToErrPage == 0 && (int) $client > 0 && (int) $lang > 0) {
        global $errsite_idcat, $errsite_idart, $error;

        if ($cfgClient['set'] != 'set')	{
            rereadClients();
        }

        $error = 1;
        $idcat = $errsite_idcat[$client];
        $idart = $errsite_idart[$client];
    }
Somit setzt das AMR-Plugin die wichtigen 3 globalen Variablen für die korrekte Ausgabe der Fehlerseite, den Fehlerstatus ($error = 1), die Kategorie und den Artikel der Fehlerseite.
Dann gibt CONTENIDO auch einen "404 Not Found" Header mit der Fehlerseite aus.

Wichtig:
Damit das so funktioniert, muss natürlich vorher der Mandant und die Sprache korrekt ermittelt worden sein.

Wollt ihr auch eine Fehlerseite ausgeben, wenn z. B. der Mandant und/oder die Sprache nicht gefunden werden konnte, dann könnt ihr mit einer statischen Fehlerseite arbeiten.

1. Erstellt dazu einfach eine Datei 404.html im Documentroot, achtet darauf, dass der Inhalt größer als 512 Bytes ist, da ansonsten manche Browser (IE und Chrome) die Ausgabe ignorieren.

3. Erweitert das Beispiel von Oben (in Datei "contenido/plugins/mod_rewrite/includes/front_content_controller.php" um einen weiteren elseif Block:

Code: Alles auswählen

    $iRedirToErrPage = ModRewrite::getConfig('redirect_invalid_article_to_errorsite', 0);
    // try to redirect to errorpage if desired
    if ($iRedirToErrPage == 1 && (int) $client > 0 && (int) $lang > 0) {
        global $errsite_idcat, $errsite_idart;

        if ($cfgClient['set'] != 'set')	{
            rereadClients();
        }

        // errorpage
        $aParams = array (
            'client' => $client, 'idcat' => $errsite_idcat[$client], 'idart' => $errsite_idart[$client],
            'lang' => $lang, 'error'=> '1'
        );
        $errsite = 'Location: ' . Contenido_Url::getInstance()->buildRedirect($aParams);
        mr_header($errsite);
        exit();
    } elseif ($iRedirToErrPage == 0 && (int) $client > 0 && (int) $lang > 0) {
        global $errsite_idcat, $errsite_idart, $error;

        if ($cfgClient['set'] != 'set')	{
            rereadClients();
        }

        $error = 1;
        $idcat = $errsite_idcat[$client];
        $idart = $errsite_idart[$client];
    } elseif ($iRedirToErrPage == 0 && ((int) $client == 0 || (int) $lang == 0)) {
        header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
        $filename = $_SERVER['DOCUMENT_ROOT'] . '/404.html';
        readfile($filename);
        exit();
    }
Der letzte elseif Block gibt nun einen "404 Not Found" Header und den Inhalte der statischen Datei 404.html aus, sofern der Mandant oder die Sprache nicht ermittelt werden konnte.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Gesperrt