Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mieux gérer 404

21 réponses
Avatar
benoit
Bonjour,


J'ai un site web de photos et je viens de renommer des images en
remplaçant 1234.jpeg par prenom_ville.jpeg.

Le serveur gère les erreurs 404 en renvoyant sur la home page. Si une
image n'existe pas/plus, ce que je souhaiterai c'est que soit renvoyé
sur :

- Le index.html du dossier dans laquelle elle se trouvait ;
ou
- L'image avec le nouveau nom.

J'ai essayé, veinenement, de rédiger un fichier .htaccess mais c'est
toujours la home page qui s'affiche.

Exemple de contenus de .htaccess situé dans le dossier Afrique :

ErrorDocument 404 /index.html
ErrorDocument 404 photo/paris/tout_le_Monde/Afrique/index.html
ErrorDocument 404
www.leraillez.com/photo/paris/tout_le_Monde/Afrique/index.html

Rien ne renvoie sur cette page index.html

L'idéal serait de renvoyer vers le fichier avec le nouveau nom, mais là,
même si Olivier m'a fait découvrir le concept d'Alias, je suis perdu.
Comment se nomme le fichier, où je le mets...

HTTP/1.1 200 OK
Date: Sat, 03 Jun 2017 09:25:07 GMT
Server: Apache/2.0.47 (Unix) DAV/2 PHP/5.0.4
Last-Modified: Tue, 24 Jan 2017 16:20:17 GMT
ETag: "54155f-13a-7ddc7240"
Accept-Ranges: bytes
Content-Length: 314
Content-Type: text/html


D'avance merci,


FU2 vers le newsgroup le plus approprié selon vous.

--
On s'occupe de l'étiquette qu'une fois les vendanges terminées.

10 réponses

1 2 3
Avatar
Sergio
Le 04/06/2017 à 23:41, Olivier Miakinen a écrit :
Le 04/06/2017 23:22, Yliur a écrit :
Mais si c'est par un GET http://chemin/.htaccess, vérifie que tu as
bien mis deux « c » aussi bien au nom du fichier que dans ta requête.
En effet, ci-dessus tu as écrit « .htacess » avec un seul c. ;-)

Est-ce qu'Apache renvoie le contenu de ce fichier ?

Bonne question. Je viens d'essayer sur mon site, et la réponse est non :
<http://www.miakinen.net/.htaccess>
403 Forbidden
You don't have permission to access /.htaccess on this server.
Pourtant, le fichier existe bel et bien, je peux y accéder par FTP.

Normal. Pour des raisons de sécurité, Apache empêche d'accéder aux fichiers cachés...
On ne petu y accéder que directement (via l'OS...) ou via FTP.
--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
Nicolas George
Sergio , dans le message <5934f000$0$8956$, a
écrit :
Normal. Pour des raisons de sécurité, Apache empêche d'accéder aux
fichiers cachés...

Rien de tel.
La configuration par défaut du serveur Apache comporte souvent ces
lignes :
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<FilesMatch "^.ht">
Require all denied
</FilesMatch>
Rien de plus. Et rien concernant les autres fichiers dont le nom
commence par un point.
Avatar
Eric Demeester
Bonjour,
Benoit (Sat, 3 Jun 2017 12:46:33 +0200 -
fr.comp.infosystemes.www.auteurs) :
Juste sur ce point :
Déjà une première chose : les fichiers .htaccess que je dépose sont
supprimés par le serveur, il ne les affiche pas dans le dossier.
J'attends des infos de la part de mon hébergeur.

Vérifie que ton logiciel FTP est configuré pour afficher les fichiers
cachés. Les fichiers dont le nom débute par un point peuvent être
considérés comme des fichiers système et ne pas être affichés par
défaut.
Avatar
benoit
Olivier Miakinen <om+ wrote:
Le 04/06/2017 16:37, Benoit a écrit :
P.-S. : je ne connais pas la syntaxe exacte, peut-être le / est-il
obligatoire, donc :
RedirectMatch 301 /1234.(.*) /benoit.$1
ou :
RedirectMatch permanent /1234.(.*) /benoit.$1

Merci, mais je mets ça où ?

De mémoire, ça doit être dans httpd.conf au niveau général, ou dans
un .htaccess répertoire par répertoire. Mais ça fait un moment que
je n'y touche pas.
Parce que la doc ne dit rien. En tout cas
j'ai envoyé un mail pour savoir pourquoi les fichiers .htacess, que je
téléchargeais, n'apparaissaient pas.

Comment cherches-tu à les faire « apparaître » ? Si c'est par 'ls' sur
un Unix-like, il faut savoir que par défaut la commande ls n'affiche
pas les fichiers dont le nom commence par un « . », et pour les voir
il faut écrire par exemple « ls -a ».
Mais si c'est par un GET http://chemin/.htaccess, vérifie que tu as
bien mis deux « c » aussi bien au nom du fichier que dans ta requête.
En effet, ci-dessus tu as écrit « .htacess » avec un seul c. ;-)

C'est par ftp que je le fais (avec deux « cc » ;)
Et oui il affiche les fichiers cachés. :-/
--
On s'occupe de l'étiquette qu'une fois les vendanges terminées.
Avatar
Nicolas George
Benoit, dans le message <1n73gxe.1ltcp5qwtlky8N%, a
écrit :
J'ai cru comprendre qu'avec les alias on pouvait renvoyé une URL vers
une autre. C'est ce que je préfèrerai faire.

Non, ça ne peut pas marcher : la vraie question ici est de décider ce
qui doit se passer entre le serveur et le client. Les alias sont une
fonctionnalité interne au serveur (et encore, celui d'Apache). Ils
peuvent éventuellement permettre d'implémenter la politique choisie,
mais ile ne sont pas en eux-mêmes la réponse.
Un alias, ça permet de substituer un chemin à un autre quand il s'agit
d'aller chercher le fichier correspondant à une requête. Ça fait, avec
de petits avantages et inconvénients, la même chose que copier les
fichiers ou mettre des liens symboliques. C'est rarement la solution à
ce genre de problème. Ça sert plus à assembler différentes parties d'un
site gérées par différentes équipes en une seule hiérarchie.
Si le même fichier exactement existe toujours mais est accessible sous
une autre URL, et que cette URL est connue, c'est « 301 Moved
Permanently » qu'il faut renvoyer, pas « 404 Not Found ».

Oui, mais je n'ai pas accès à ça sur le serveur, mon hébergeur ne me
donne pas cette possibilité. Ou alors c'est un fichier « texte » que je
mets quelque part ?

Si c'est Apache, c'est la même configuration que pour régler le document
404 ou autres options du même genre. Il faudra obtenir les détails de
l'hébergeur.
Hors de mon champ de compétences, connaissances

Eh bien il faut les élargir. C'est toujours rentable.
Mes pages sont générées par un logiciel de création de site de photos,
il utilise le nom des images sans pb. Si je change le nom d'une image il
me génère un nouveau site et le télécharge sur le serveur.
L'image 1234.jpeg est incluse dans une page 1234.html qui contient
l'image et tout un tas d'autres choses. Comme le nom de l'image a changé
(en benoit.jpeg par exemple), le nom de la page a changé :

Ok.
1234.html est
remplacée par benoit.html. C'est ce que je voudrai pouvoir gérer.

Tu ne donnes pas une information capitale : as-tu (ou peux-tu
construire) une liste complète des fichiers avec leurs anciens et
nouveaux noms ?
Si la réponse est oui, alors la bonne solution est de mettre en place
des 301 pour tous les fichiers, HTML de présentation et JPEG.
Si la réponse est non, alors un moteur de recherche prérempli dans le
document 404 est à mon avis le mieux qu'on puisse faire.
Avatar
Nicolas George
Benoit, dans le message <1n73gxe.1ltcp5qwtlky8N%, a
écrit :
J'ai cru comprendre qu'avec les alias on pouvait renvoyé une URL vers
une autre. C'est ce que je préfèrerai faire.

Non, ça ne peut pas marcher : la vraie question ici est de décider ce
qui doit se passer entre le serveur et le client. Les alias sont une
fonctionnalité interne au serveur (et encore, celui d'Apache). Ils
peuvent éventuellement permettre d'implémenter la politique choisie,
mais ile ne sont pas en eux-mêmes la réponse.
Un alias, ça permet de substituer un chemin à un autre quand il s'agit
d'aller chercher le fichier correspondant à une requête. Ça fait, avec
de petits avantages et inconvénients, la même chose que copier les
fichiers ou mettre des liens symboliques. C'est rarement la solution à
ce genre de problème. Ça sert plus à assembler différentes parties d'un
site gérées par différentes équipes en une seule hiérarchie.
Si le même fichier exactement existe toujours mais est accessible sous
une autre URL, et que cette URL est connue, c'est « 301 Moved
Permanently » qu'il faut renvoyer, pas « 404 Not Found ».

Oui, mais je n'ai pas accès à ça sur le serveur, mon hébergeur ne me
donne pas cette possibilité. Ou alors c'est un fichier « texte » que je
mets quelque part ?

Si c'est Apache, c'est la même configuration que pour régler le document
404 ou autres options du même genre. Il faudra obtenir les détails de
l'hébergeur.
Hors de mon champ de compétences, connaissances

Eh bien il faut les élargir. C'est toujours rentable.
Mes pages sont générées par un logiciel de création de site de photos,
il utilise le nom des images sans pb. Si je change le nom d'une image il
me génère un nouveau site et le télécharge sur le serveur.
L'image 1234.jpeg est incluse dans une page 1234.html qui contient
l'image et tout un tas d'autres choses. Comme le nom de l'image a changé
(en benoit.jpeg par exemple), le nom de la page a changé :

Ok.
1234.html est
remplacée par benoit.html. C'est ce que je voudrai pouvoir gérer.

Tu ne donnes pas une information capitale : as-tu (ou peux-tu
construire) une liste complète des fichiers avec leurs anciens et
nouveaux noms ?
Si la réponse est oui, alors la bonne solution est de mettre en place
des 301 pour tous les fichiers, HTML de présentation et JPEG.
Si la réponse est non, alors un moteur de recherche prérempli dans le
document 404 est à mon avis le mieux qu'on puisse faire.
Avatar
benoit
Nicolas George <nicolas$ wrote:
Hors de mon champ de compétences, connaissances

Eh bien il faut les élargir. C'est toujours rentable.

C'est pourquoi j'aime poser des questions quand je ne trouve pas les
réponses tout seul ;)
Mes pages sont générées par un logiciel de création de site de photos,
il utilise le nom des images sans pb. Si je change le nom d'une image il
me génère un nouveau site et le télécharge sur le serveur.
L'image 1234.jpeg est incluse dans une page 1234.html qui contient
l'image et tout un tas d'autres choses. Comme le nom de l'image a changé
(en benoit.jpeg par exemple), le nom de la page a changé :

Ok.
1234.html est
remplacée par benoit.html. C'est ce que je voudrai pouvoir gérer.

Tu ne donnes pas une information capitale : as-tu (ou peux-tu
construire) une liste complète des fichiers avec leurs anciens et
nouveaux noms ?
Si la réponse est oui, alors la bonne solution est de mettre en place
des 301 pour tous les fichiers, HTML de présentation et JPEG.

La réponse est oui, je dois donc réussir à mettre un fichier .htaccess
avec toutes les lignes qui vont bien. Genre :
RedirectMatch 301 /photo/dossier1/1234.html /photo/dossier1/benoit.html
--
On s'occupe de l'étiquette qu'une fois les vendanges terminées.
Avatar
Nicolas George
Benoit, dans le message <1n75udj.1o9i98w64lr09N%, a
écrit :
C'est pourquoi j'aime poser des questions quand je ne trouve pas les
réponses tout seul ;)

Je ne peux que féliciter.
La réponse est oui, je dois donc réussir à mettre un fichier .htaccess
avec toutes les lignes qui vont bien. Genre :
RedirectMatch 301 /photo/dossier1/1234.html /photo/dossier1/benoit.html

Oui. À vérifier dans la doc : il est possible que « benoit.html »
suffise, et qu'Apache complète le chemin.
(Il est possible aussi qu'au contraire il faille une URL complète à
droite, mais je ne me souviens plus très bien. C'est peut-être seulement
quand on envoie directement l'entête depuis un script.)
Avatar
benoit
Nicolas George <nicolas$ wrote:
Benoit, dans le message <1n75udj.1o9i98w64lr09N%, a
écrit :
C'est pourquoi j'aime poser des questions quand je ne trouve pas les
réponses tout seul ;)

Je ne peux que féliciter.
La réponse est oui, je dois donc réussir à mettre un fichier .htaccess
avec toutes les lignes qui vont bien. Genre :
RedirectMatch 301 /photo/dossier1/1234.html /photo/dossier1/benoit.html

Oui. À vérifier dans la doc : il est possible que « benoit.html »
suffise, et qu'Apache complète le chemin.

Si je mets un htaccess par dossier, on m'a dit qu'il ne fallait en
mettre qu'un à la racine du site. :-/
(Il est possible aussi qu'au contraire il faille une URL complète à
droite, mais je ne me souviens plus très bien. C'est peut-être seulement
quand on envoie directement l'entête depuis un script.)

Je vais regarder ça, merci. Pas évident du tout à rédiger ce truc.
--
On s'occupe de l'étiquette qu'une fois les vendanges terminées.
Avatar
Sergio
Le 05/06/2017 à 21:41, Benoit a écrit :
Nicolas George <nicolas$ wrote:
Benoit, dans le message <1n75udj.1o9i98w64lr09N%, a
écrit :
C'est pourquoi j'aime poser des questions quand je ne trouve pas les
réponses tout seul ;)

Je ne peux que féliciter.
La réponse est oui, je dois donc réussir à mettre un fichier .htaccess
avec toutes les lignes qui vont bien. Genre :
RedirectMatch 301 /photo/dossier1/1234.html /photo/dossier1/benoit.html

Oui. À vérifier dans la doc : il est possible que « benoit.html »
suffise, et qu'Apache complète le chemin.

Si je mets un htaccess par dossier, on m'a dit qu'il ne fallait en
mettre qu'un à la racine du site. :-/

Si tu mets un .htaccess dans un dossier (ou la racine), il sera valable pour tous les sous-dossiers, et éventuellement complété par
les autres .htaccess des sous-dossiers.
--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
1 2 3