web-dev-qa-db-fra.com

404 codes HTTP dans Joomla

comment faire en sorte que Joomla retourne un "vrai" code 404? Je n'arrive pas à comprendre comment y arriver! J'ai changé htaccess.txt à .htaccess, a activé le plug-in système/redirection et a activé les URL de réécriture dans les options globales de Joomla.

Cependant, toute fausse adresse URL que je saisis redirige simplement vers la page d'accueil, pas même vers la page d'erreur Joomla par défaut.

Cela se produit même sur le site de démonstration de Joomla ici: https://demo.joomla.org/badurl_fake

Essais plus loin:

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

Cela se traduit par une mauvaise URL renvoyant une véritable erreur 404

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

Cela se traduit par une mauvaise URL renvoyant une véritable erreur 404

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

Cela se traduit par une mauvaise URL renvoyant une véritable erreur 404

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

Cela se traduit par un mauvais URL renvoyant l'utilisateur à la page d'accueil

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

Cela se traduit par un mauvais URL renvoyant l'utilisateur à la page d'accueil

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

Cela se traduit par un mauvais URL renvoyant l'utilisateur à la page d'accueil

Donc, il me semble que le htaccess est le coupable ici. Lors de mes tests, chaque fois que le fichier .htacess est présent, le 404 est redirigé vers la page d'index.

7
user101289

Ce n'est pas une erreur mais un comportement attendu. Si vous accédez à Composants> Rediriger dans l'interface de l'administrateur de Joomla, vous verrez une liste de toutes les demandes d'URL aboutissant à un 404. Joomla les enregistre automatiquement dans ce composant et redirige la demande vers la page d'accueil.

La raison en est double: premièrement, éviter une expérience utilisateur négative en atténuant les pages d'erreur et, deuxièmement, fournir un moyen à un administrateur de site Web pour effectuer le suivi et le réacheminement manuel vers les points d'extrémité souhaités. J'ai joint un lien vers la documentation Joomla pour l'expliquer plus en détail.

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

2
Brian Bolli

Vous pouvez personnaliser l'erreur 404 (exemple: affichez une page personnalisée ou envoyez-le ailleurs que sur la page d'accueil) en ajoutant un fichier PHP à votre modèle, nommez-le error.php et placez-le à la racine du modèle (à côté du index.php du modèle).

Dans ce fichier, vous pouvez indiquer quoi faire, par exemple envoyer quelque part sur votre site (update /SOMEWHEREINYOURSITE avec l'URL souhaitée):

<?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');
}
?>

Méthode 2:

Sachant que vous utilisez le fichier .htaccess (pour lequel je suppose que vous utilisez un serveur Apache), vous pouvez ajouter une définition de l'utilisation de l'erreur 404.

Placez ceci en haut du fichier .htaccess:

ErrorDocument 404 /SOMEWHEREINYOURSITE

Comme avec la méthode précédente, update /SOMEWHEREINYOURSITE avec l'URL souhaitée.

2
jackJoe

J'ai récemment vu cela sur quelques sites et je viens de découvrir que cela se produit lorsque le site est en mode hors connexion et que vous êtes connecté à l'interface.

Lorsque le site est en ligne et que vous créez une URL, vous obtenez la page d'erreur standard avec le code d'état.

Lorsque le site est hors ligne et que vous êtes connecté, vous êtes redirigé vers /index.php avec un autre code de statut.

1
Robert Went