IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Différencier erreur 404 pour lien ou image


Sujet :

Apache

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut Différencier erreur 404 pour lien ou image
    Bonjour,

    Je souhaite savoir s'il est possible de différencier l'erreur HTTP 404 (ErrorDocument 404 dans htaccess) pour les liens d'un coté (lien brisé) ou la source des images afin de renvoyer vers une page spécifique pour les liens et ne rien faire pour les fichiers images non trouvés (afin de ne pas surcharger inutilement mon serveur)
    D'avance merci

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par saluts92 Voir le message
    renvoyer vers une page spécifique pour les liens
    Le terme "renvoyer" signifie quoi précisemment ? Tu veux que l'URL dans la barre du navigateur change ?

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    Bonjour,

    Si dans mon code html j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src='/images/photoproduit-1239.jpg' />
    et que le fichier /images/photoproduit-1239.jpg n'existe pas, le remplacer par une image du type "photo non disponible" du genre /images/photoproduit-indispo.jpg

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    OK. Tu demandais juste l'inverse dans ton premier message. Je n'ai pas essayé mais on peut imaginer un truc de ce genre :

    Si tu laisses un ErrorDocument pour les autres erreurs 404, je ne sais pas s'il y aura un conflit. Il faudra peut-être écrire l'équivalent avec mod_rewrite. Tu gères comment les erreurs 404 aujourd'hui ? Si tu as aujourd'hui des ErrorDocument, peux-tu nous les donner ?

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    ce n'est pas vraiment l'inverse je veux juste différencier less errordocument 404
    en faire un pour les images (avec un filtre c possible ?)
    et un autre pour le reste

    dans ton dernier message tu dit "mais on peut imaginer un truc de ce genre" et tu ne donnes pas d'exemple.

    sinon aujourd'hui j'ai un seul ErrorDocument 404 qui redirige vers la page d'accueil de mon site

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    La fatigue, j'ai écrit mon message en 2 fois et je n'ai pas tout supprimé.

    Tu peux donner le ErrorDocument exact que tu as (modulo le nom du site éventuel que tu peux changer). En fait, je veux juste savoir si c'est un ErrorDocument 404 /index.php par exemple ou plutôt ErrorDocument 404 http://...

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    pour l'instant je n'ai encore écrit aucune règle pour les images

    j'ai juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Errordocument 404 http://www.xxxx.com

  8. #8
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Pour info, ce n'est pas la meilleure pratique de rediriger les pages qui tombent en fait en erreur, mais passons. Il faut que tu remplaces cette ligne ErrorDocument par la série de lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteEngine on
     
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule \.(jpg|gif|png)$ /chemin/vers/image/par/defaut.jpg [R,L]
     
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* / [R,L]
    A la fin de la première RewriteRule (celle pour les images), tu peux supprimer le flag R si tu ne veux pas faire de redirection explicite du navigateur (i.e. l'adresse dans la barre du navigateur restera l'adresse de l'image qui n'existe pas).

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    Merci

    Mais quelle est cette "meilleure solution" à laquelle tu fais allusion ?

  10. #10
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Faire une redirection explicite (= l'adresse dans la barre du navigateur qui change). Pour les éléments qui tombent en erreur 404, le serveur doit répondre "404 Not Found" avec un page HTML qui explicite l'erreur 404, et non pas rediriger le navigateur vers la page d'accueil du site. Le souci est surtout pour les moteurs d'indexation et les outils de statistiques qui ne sauront peut-être pas t'indiquer des URL dans tes pages qui ne sont pas bonnes.

  11. #11
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    Ah Ok, je prépare une jolie page qui dt "désolé mais la page demandée n'existe pas/plus, etc ....."

    Dans l'entete de cette page je mets un <?php header("HTTP/1.1 404 Not Found"); ?>


    Mais comment je code dans mon htaccess si "tu ne veux pas" que j'utilise le ErrorDocument 404 ?

    D'avance merci

  12. #12
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    C'est ça. Il suffit de retirer le flag R et d'indiquer le chemin de cette page à la place de / dans la seconde règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* /page/erreur.php [L]

  13. #13
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    dernière question (après je t'embete plus)

    ce code est plutot à mettre à la fin du htaccess si je comrpends bien ?

  14. #14
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Je ne sais pas, il faut essayer, mais a priori oui.

  15. #15
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    Mais je ne comprends pas très bien ta regle :
    en effet elle dit si ce n'est pas un fichier ou un répertoire mais dans le cas ou il s'agit d'un fichier (ex : toto.html) qui n'existe pas comment elle réagit ?

    de plus je consulte les forums depuis quelques jours et tous disent d'utiliser "errordocument 404 ..." contrairement à toi

  16. #16
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    As-tu essayé la règle ?

    Pour information, les RewriteCond s'enchaînent par un ET logique : "si ce n'est pas un fichier et si ce n'est pas un répertoire, alors...". Si on va consulter la doc d'Apache, on lit les définitions suivantes :
    '-d' (is directory)
    Treats the TestString as a pathname and tests whether or not it exists, and is a directory.
    '-f' (is regular file)
    Treats the TestString as a pathname and tests whether or not it exists, and is a regular file.

  17. #17
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    oui j'ai essayé mais cette règle est inopérante pour moi

    mais qu'utilises tu toi sur ton (ou tes) site pour gérer le 404 SEO friendly ?

  18. #18
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    J'ai un site misérable dans un coin, je ne fais pas de SEO.

    Il se peut qu'il y ait un conflit avec une autre règle. Tu peux donner le .htaccess complet ?

  19. #19
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    Après moulte recherche, j'ai finalement pris la décision de faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 /404to301.php
    404to301.php contenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php header("Status: 301 Moved Permanently", false, 301); header("Location: http://www.nomdedomaine.com/"); exit(); ?>
    Comme ça ma page d'accueil récupère tout le "jus" des pages n'existant plus

    J'ai constaté que plusieurs sites bien placé utilisent cette approche

    Si tu as un avis je suis preneur

  20. #20
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Si c'est juste pour faire ça, pourquoi ne pas continuer d'utiliser le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 http://www.nomdedomaine.com/
    que tu avais déjà essayé à un moment donné ? Je ne vois pas la différence entre les 2, si ce n'est que tout par configuration Apache sans passer par du PHP est plus simple.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/07/2014, 18h17
  2. Réponses: 4
    Dernier message: 25/11/2011, 09h32
  3. Erreur 404 pour des liens sur la welcome page
    Par Roy Miro dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 01/05/2011, 18h49
  4. Réponses: 1
    Dernier message: 29/11/2008, 10h01
  5. Réponses: 2
    Dernier message: 29/11/2007, 18h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo