8791 sujets

Développement web côté serveur, CMS

Bonjour, deux questions sur ErrorDocument 404

Première question :
On peut mettre un .htaccess par répertoire.
Est-ce qu'on peut mettre une ligne "ErrorDocument 404 /erreur404.php" dans chacun de nos .htaccess (avec également un fichier "erreur404.html" par répertoire) ?
- pour que "http://site.com/pageinexistante.html" renvoie à la page "erreur404.html" de la racine
- et que "http://site.com/dossier1/pageinexistante.html" renvoie à la page "erreur404.html" du répertoire "dossier1"
Ceci parce que "http://site.com/dossier1/" est un véritable sous-site qui mérite une page d'erreur spécifique.

Deuxième question :
Sur mon site,
"http://site.com/pageinexistante.html" renvoie à l'erreur404
"http://site.com/pa" renvoie à l'erreur404
mais "http://site.com/p" renvoie à "http://site.com/"
Savez-vous pourquoi ?
Modifié par Lolololo (10 Aug 2009 - 22:59)
Bonsoir,

A priori (je n'ai jamais testé), une redirection 404 en fonction du répertoire de départ devrait être tout à fait possible. Il suffit d'essayer. Smiley cligne

Concernant la seconde question, le résultat est-il le même avec ou sans les www ?
Et si oui, le site est-il construit au moyen d'un cms ? Smiley murf
Merci Cygnus
Question1: moi j'ai fait le test d'une page erreur404.html dans un répertoire accueillant mon mini-site, et ça n'a pas marché; je me suis dit que c'était peut-être normal.
Question2: avec ou sans le www, c'est pareil, je viens de vérifier. Et non, j'ai fait entièrement le site avec mon éditeur de texte.

Mais je dois peut-être préciser que dans mes .htaccess, je n'ai mis que cette ligne "ErrorDocument 404 /erreur404.php", alors que j'ai vu que beaucoup l'associent avec une règle de type rewriting.
Salut,

un .htaccess par répertoire avec chacun un ErrorDocument 404 ça fonctionne (et il n'est pas nécessaire de mettre autre chose dedans)

pour ton problème de http://site.com/p je pense que l'explication se trouve sur cette page (paragraphe Attention aux « répertoires virtuels »).
Je suis hébergé par 1&1. Voici les comportements que j'observe.

J'ai juste "dossier1" 3 fichiers : erreur404.php .htaccess et index.php

http://www.site.com/dossier1/machin.php
erreur 404 avec la mise en page 1&1

http://www.site.com/dossier1/machin
message d'erreur "Not found" sans la mise en forme 1&1

http://www.site.com/dossier1
http://www.site.com/dossier1/index.php
ma page s'affiche

http://www.site.com/dossier1/inde.php (sans le x)
ma page s'affiche

http://www.site.com/dossier1/in
"Not Found
The requested URL /dossier1/in was not found on this server.
Additionally, a 300 Multiple Choices error was encountered while trying to use an ErrorDocument to handle the request."

http://www.site.com/dossier1/i
http://www.site.com/dossier1/a
http://www.site.com/dossier1
http://www.site.com/dossier
ma page s'affiche

http://www.site.com/dossie
ma page personnelle erreur404.php à la racine du site s'affiche

http://www.site.com/dossier1////
ma page s'affiche mais sans ma mise en forme css (appelée relativement)

Jamais ma page erreur404 de mon répertoire "dossier1" ne s'affiche.

C'est peut-être 1&1 qui veut me faciliter la tâche. C'est d'ailleurs assez efficace, même si ça empiète sur mes prérogatives.
Je vais voir ce qu'ils en disent.
Modifié par Lolololo (10 Aug 2009 - 21:18)
Quelle syntaxe utilises-tu pour les ErrorDocument ?

Tu as bien quelque chose comme ça :
ErrorDocument 404 /erreur404.php
et
ErrorDocument 404 /dossier1/erreur404.php
Oui, j'ai bien précisé le nom du répertoire
(j'ai aussi essayé sans, mais là j'ai vérifié, c'est bien
ErrorDocument 404 /dossier1/erreur404.php


Je vais chercher un peu s'il y a des règles spécifiques à 1&1.
En particulier, j'ai lu tout à l'heure (mais je ne retrouve pas le forum) une réponse datant de quelques années qui disait que 1&1 se réservait "erreur404.php" et qu'on devait utiliser un autre nom. Je ne pense pas que ce soit vrai, mais il y a peut-être quelque chose à vérifier.

Sinon, j'avais édité et rajouté dans mon post précédent :
http://www.site.com/dossier1////
m'affiche ma page mais sans mise en forme css

Je vais repartir de zéro pour voir si je n'ai pas mélangé mes fichiers, ou mis des html à la place des php (j'ai essayé les deux), et tout ça. Je vais voir ce qu'on en dit chez mon hébergeur, et je vous dirai.
Merci.
J'ai mis un exemple en ligne :


à cette adresse ou à celle-ci c'est le .htaccess à la racine qui prend en charge l'erreur :
ErrorDocument 404 /404.php


à cette autre adresse c'est bien le .htaccess du repertoire qui prend en charge l'erreur :
ErrorDocument 404 /repertoire/404.php


Pour ce qui est du lien vers le css le plus simple est d'utiliser l'élément BASE :
<base href="http://www.example.com/" />

Modifié par Heyoan (10 Aug 2009 - 22:34)
Je pense avoir tout résolu.

Pour que mon hébergeur n'interprète pas mal les petites différences d'adresse, y compris les "/" créant un répertoire, il faut ajouter
CheckSpelling off

Si ma page d'erreur est en .php, c'est celle de 1&1 qui s'affiche à la place. Je dois créer ma page d'erreur en .html ou rajouter des trucs notés ici :
http://faq.1and1.fr/hebergements/htaccess/10.html

Un sujet analogue avait déjà été abordé par alsacreations
http://forum.alsacreations.com/topic-1-14921-1-RsoluErreur-404-Chez-1and1-comment-personnaliser-.html

Merci, vos réponses m'ont donné le courage de continuer à chercher.

edit : avec tout ça, et la preuve par l'exemple que c'est possible, je vais (facilement !) créer une page d'erreur spécifique à un répertoire.
et pour <base...>, j'ai presque tout compris.
Modifié par Lolololo (10 Aug 2009 - 22:58)