404 HTTP-Codes in Joomla

7

Wie bringt man Joomla dazu, einen "echten" 404-Code zurückzugeben? Ich kann nicht herausfinden, wie ich das erreichen kann! Ich habe mich verändert htaccess.txtzu .htaccess, aktiviert das System / Redirect - Plugin, und Umschreiben von URLs in den die Joomla globalen Optionen gedreht.

Jede gefälschte URL, die ich eingebe, leitet jedoch einfach zur Startseite weiter, nicht einmal zur Standard-Joomla-Fehlerseite.

Dies geschieht auch auf der Joomla-Demo-Site hier: https://demo.joomla.org/badurl_fake

Weiter testen:

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: NO

Dies führt zu einer fehlerhaften URL, die einen echten 404-Fehler zurückgibt

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: NO

Dies führt zu einer fehlerhaften URL, die einen echten 404-Fehler zurückgibt

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: YES

Dies führt zu einer fehlerhaften URL, die einen echten 404-Fehler zurückgibt

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: YES

Dies führt zu einer falschen URL, die den Benutzer zur Startseite zurückbringt

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: YES

Dies führt zu einer falschen URL, die den Benutzer zur Startseite zurückbringt

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: NO

Dies führt zu einer falschen URL, die den Benutzer zur Startseite zurückbringt

Es scheint mir also, dass der Erfolg hier der Schuldige ist. Bei meinen Tests wird der 404 immer dann auf die Indexseite umgeleitet, wenn die .htacess vorhanden ist.

user101289
quelle
Haben Sie Änderungen an Ihrer .htaccess-Datei vorgenommen? Oder ist es die Standarddatei, die mit Joomla geliefert wird?
Johanpw
Nein. Gerade Standard läuft auf Ubuntu Lampenstapel.
user101289
@ user101289 Welche Komponente verwenden Sie für Ihren Homepage-Menüpunkt? Com_content oder etwas anderes?
David Fritsch

Antworten:

2

Dies ist kein Fehler, sondern das erwartete Verhalten. Wenn Sie in der Benutzeroberfläche des Joomla-Administrators zu Komponenten> Umleiten navigieren, wird eine Liste aller URL-Anforderungen angezeigt, die zu einem 404 führen. Joomla zeichnet sie automatisch in dieser Komponente auf und leitet die Anforderung an die Startseite weiter.

Der Grund dafür ist zweifach: Erstens, um eine negative Benutzererfahrung zu verhindern, indem Fehlerseiten gemindert werden, und zweitens, um einem Website-Administrator die Möglichkeit zu geben, die gewünschten Endpunkte zu verfolgen und manuell weiterzuleiten. Ich habe einen Link zu Joomla-Dokumenten angehängt, die ausführlicher erläutert werden.

http://docs.joomla.org/Help33:Components_Redirect_Manager

Brian Bolli
quelle
@ Brian-- gibt es keine Möglichkeit, dies zu überschreiben und "richtige" 404 anzuzeigen?
user101289
Ja, deaktivieren Sie die System-Plugin-Umleitung.
Brian Bolli
Umleitungs-Plugin deaktiviert, es leitet immer noch zum Index ohne 404 um
user101289
Außerdem werden in der Umleitungskomponente keine Einträge mit oder ohne aktiviertem Plugin angezeigt.
user101289
Welche Version von Joomla verwenden Sie?
Brian Bolli
2

Sie können den 404-Fehler anpassen (Beispiel: Eine benutzerdefinierte Seite anzeigen oder an eine andere Stelle als die Startseite senden), indem Sie Ihrer Vorlage eine PHP-Datei hinzufügen, sie benennen error.phpund im Stammverzeichnis der Vorlage (neben index.phpder Vorlage) ablegen.

In dieser Datei können Sie angeben, was zu tun ist, z. B. an eine /SOMEWHEREINYOURSITEbeliebige Stelle auf Ihrer Website senden (Aktualisierung mit der gewünschten URL):

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

//example of a way to output the error code:
//echo $this->error->getCode();

if (($this->error->getCode()) == '404') {
    header('Location: /SOMEWHEREINYOURSITE');
}
?>

Methode 2:

Wenn Sie wissen, dass Sie die .htaccess-Datei verwenden (von der ich annehme, dass Sie einen Apache-Server verwenden), können Sie eine Definition hinzufügen, wie mit dem 404-Fehler verfahren werden soll.

Platzieren Sie dies oben in der .htaccess-Datei:

ErrorDocument 404 /SOMEWHEREINYOURSITE

Aktualisieren Sie wie bei der vorherigen Methode /SOMEWHEREINYOURSITEmit der gewünschten URL.

JackJoe
quelle
1
Die Standardeinstellung /template/system/error.php kann auch auf Ihre Vorlage kopiert werden, da viele von ihnen keine enthalten.
Tristanbailey
Der Benutzer sollte es kopieren, da eine Aktualisierungsdatei im system
Verzeichnis
1

Ich habe dies kürzlich auf einigen Websites gesehen und gerade festgestellt, dass es passiert, wenn sich die Website im Offline-Modus befindet und Sie am Frontend angemeldet sind.

Wenn die Site online ist und Sie eine URL erstellen, erhalten Sie die Standardfehlerseite mit dem Statuscode.

Wenn die Site offline ist und Sie angemeldet sind, werden Sie mit einem anderen Statuscode zu /index.php umgeleitet.

Robert ging
quelle