Comment créer et faire marcher une page d'erreur 404

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Comment créer et faire marcher une page d'erreur 404

    Bonsoir les colistiers,

    En mettant à niveau un site en Joomla 2.5.19 (oui, je sais, la 2.5.20 est sortie) sur une machine de développement en Windows 7 pro 64 bits et Wampserver 2.2 (ici encore, j'ai bien conscience que la dernière version est 2.5), je n'arrive pas à faire marcher une page d'erreur 404 perso. Pourtant j'ai suivi la doc. de Joomla idoine et ça commence mal car elle dit que le fichier d'exemple error.php qui est dans le dossier templates/system contient "die( 'Restricted access' );" alors que le fichier que j'ai se contente de "die;". J'ai essayé avec les deux, càd avec et sans, et bernique, je n'ai qu'un message d'erreur minimal du genre :
    _
    Not Found

    The requested URL /monsite/essai was not found on this server.
    _____________

    Qu'ai-je donc raté ? Y a-t-il qqch de spécial à régler dans la configuration du site, dans le fichier htaccess.txt, autre chose encore ?

    Merci de votre réponse et
    Meilleures salutations.

    P. S. : j'ai d'abord cherché sur le forum mais entrer 404 tout seul dans la case de recherche provoque des messages d'erreur, un comble. Entrer "erreur 404" sans les guillemets est mieux mais la plupart des messages, sinon tous, concernent des erreurs non désirées or moi, je souhaite les traiter !
    Dernière édition par Totila à 11/05/2014, 18h10

  • #2
    Re : Comment créer et faire marcher une page d'erreur 404

    Bonjour,

    Normalement en v2.5 ton fichier error.php contient une ligne comme ça :

    Code PHP:
    defined('_JEXEC') or die; 
    et après cette ligne tu dois introduire une ligne qui redirige en cas d'erreur 404 vers ta page spécifique. Le mieux est en général de créer un menu caché pointant sur cette page et d'adresser ensuite ce menu avec quelque chose comme :
    Code PHP:
    if (($this->error->getCode()) == '404') {
        
    header('Location: /index.php?option=com_content&view=article&id=57');
        exit;

    en partant du principe que l'article que tu as écrit pour ta page redirigé a l'id 57.
    Si tu utilises SEF et la réécriture d'URL tu peux aussi (si tu as appelé ton menu affichant la page réécrite 'erreur') utilisée la notation plus simple :

    Code PHP:
    if (($this->error->getCode()) == '404') {
        
    header('Location: /erreur');
        exit;


    Les deux notations marchent parfaitement bien sauf dans le cas d'un site local !

    En local j'utilise la syntaxe ci-dessous, mais il y a peut être (sans doute) mieux :

    Code PHP:
    if (($this->error->getCode()) == '404') {
        echo 
    file_get_contents(JURI::root().'/erreur');
        exit;

    Il y a 10 sortes de gens. Ceux qui savent compter en binaire et ceux qui ne savent pas ...

    Commentaire


    • #3
      Re : Comment créer et faire marcher une page d'erreur 404

      Merci Pieceofcake, mais ça ne marche pas.

      J'avais oublié de préciser que le site se sert du template Rhuk_milkyway, et que les paramètres SEO, toujours en local, sont tous à "Non", savoir :
      - Réécriture d'URL en clair (SEF)
      - Réécriture au 'vol' des URL
      - Ajouter un suffixe aux URL
      - Alias Unicode

      J'ai :
      1) créé un article "Erreur_404", ce qui donne automatiquement l'alias "erreur-404", avec le statut "Publié" et la catégorie "Non catégorisé",
      2) dans le menu principal, créé un lien de menu "Erreur_404", avec un type "Article" et le statut "Non publié", et l'ai associé à l'article "Erreur_404" créé ci-dessus. J'ai noté le n° de l'article mais, en vérité, il suffit de copier le contenu du champ "URL du lien",
      3) remarqué qu'il n'y avait pas de fichier error.php dans le dossier templates/rhuk_milkyway,
      3) copié le fichier templates/system/error.php dans le dossier templates/rhuk_milkyway,
      4) ouvert le fichier templates/rhuk_milkyway/error.php avec Dreamweaver CS4 mais on peut le faire directement à partir de Joomla (j'apprends en même temps) par "Gestion des templates", onglet "Templates", double-clic sur le nom du template, pavé "Fichiers maîtres du template", ligne "Modifier la page d'erreur associée au template",
      5) mis les lignes de code php prônées sous "defined('_JEXEC') or die;" avec le bon n° d'article. J'ai aussi essayé avec "header('Location: /erreur');",
      6) enregistré les modifications et fermé ce fichier.

      Faut-il intervenir aussi dans le fichier htaccess.txt ? Le fichier templates/system/error.php est-il pourri à l'origine ? J 'avoue être désemparé. Comment savoir par quels méandres passe l'affichage d'une page ?

      Au plaisir de vous lire.

      P.S. : j'ai posté dans Joomla 3 alors que la version dont je me sers est la 2.5. Si un modérateur ou administrateur pouvait déplacer le fil dans le bon sous-salon, je lui en saurais gré.

      Commentaire


      • #4
        Re : Comment créer et faire marcher une page d'erreur 404

        Bonjour,

        P.S. : j'ai posté dans Joomla 3 alors que la version dont je me sers est la 2.5. Si un modérateur ou administrateur pouvait déplacer le fil dans le bon sous-salon, je lui en saurais gré.
        Je viens de déplacer le post.
        Pour apprendre à construire votre site web avec Joomla 3 : Joomla3! Le Livre Pour Tous : http://cinnk.com/joomla/3/le-livre-pour-tous

        Référencement Joomla! 10 astuces pour référencer son site web https://cinnk.com/articles/referencement-joomla-10-astuces-pour-referencer-son-site-web

        Créez votre boutique en ligne avec Joomla! & HikaShop http://cinnk.com/boutique/livres/cre...la-et-hikashop

        Commentaire


        • #5
          Re : Comment créer et faire marcher une page d'erreur 404

          J'ai exactement les mêmes paramètres de configuration de site que toi, mis à part ma version de Joomla 3.2.2 et désormais 3.3

          Ça marche magnifiquement bien en production et également en local pour peu que je modifie l'acheminement de l'url dans le fichier error.php à la racine de mon répertoire template (JSNEpic).

          Et non, normalement il n'y a rien de spécial à faire dans le .htaccess (pas htaccess.txt qui n'est pas utilisé par Joomla! mais seulement là comme support d'un futur .htaccess au moment de l'installation)
          Le fichier templates/system/error.php est-il pourri à l'origine ?
          Je ne sais pas, mais ce n'est pas celui là qu'il faut modifier. ou en tout cas pas directement.

          Il faut copier (via FTP) le fichier templates/system/error.php vers le répertoire templates/tontemplatecourant/error.php et c'est celui là qu'il faut modifier.

          C'est bien ce que tu as fait ?
          En outre j'ai juste un doute sur modifier via dreamweaver, que je n'ai plus utilisé depuis bien longtemps, mais qui il me semble à l'époque rajoutait volontiers des choses à lui dans le contenu des pages html et qui n'est pas particulièrement prévu pour traiter des pages php (ou alors il a bien changé). le bloc note (notepad++) en local fonctionne très bien pour ce genre de petits fichiers


          J'ai aussi essayé avec "header('Location: /erreur');"
          Dans ton cas tel que annoncé, il faut : header('Location: /erreur-404');
          c'est l'alias qui doit suivre Location : non ?

          Cordialement
          Il y a 10 sortes de gens. Ceux qui savent compter en binaire et ceux qui ne savent pas ...

          Commentaire


          • #6
            Re : Comment créer et faire marcher une page d'erreur 404

            Bonjour Pieceofcake, et désolé d'avoir tardé à répondre.

            Comme dit plus haut, j'ai d'abord copié le fichier templates/system/error.php dans le dossier templates/rhuk_milkyway avant de le modifier.

            Concernant Dreamweaver, il n'y a pas de pb pour modifier un fichier. Sa mauvaise réputation date du temps de la version MX chez Macromedia mais c'est injuste qu'elle continue de lui coller alors qu'il existe la CS6 chez Adobe (pour ma part je me sers de la CS4 chez le même éditeur), comme pour Internet explorer 6 alors qu'il en est à la 11, comme pour les Grecs plus de 2000 ans après etc.

            J'ai remarqué que plusieurs, pour ne pas dire beaucoup, de personnes ici travaillent directement sur le site distant sans le faire d'abord sur une version locale. C'est ce que j'ai alors essayé aussi. Résultat des courses : ça marche ! ... alors qu'en local, on reste stupidement sur la page de départ. C'est bien triste qu'il ne soit pas possible d'essayer d'abord en local car travailler directement sur un site en production me débecte.

            Merci et bonsoir.

            Commentaire


            • #7
              Re : Comment créer et faire marcher une page d'erreur 404

              Bien bonne chose, relis le post #2 quand même où je te disais que le comportement local et production était différent

              Mais c'est vrai que en local on n'est pas vraiment sur le site, mais en quelque sorte sur un sous-site et cela change beaucoup de choses dans l'accès aux documents, d'où mon idée d'accéder via "file_get_contents(JURI::root().'/erreur')"


              L'important c'est que tu aies réussi à le faire fonctionner. Si tout est OK,merci de clôturer la discussion en passant le fil en réglé.
              Il y a 10 sortes de gens. Ceux qui savent compter en binaire et ceux qui ne savent pas ...

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X