Redirection 301 incluse dans une 404 ?

WRInaute discret
Bonjour,

J'ai cherché, cherché et franchement c'est un bor*** monstre dès qu'on parle de Redirection...

Mon site Free [ http://r-o-main.guig-o-n.free.fr ] va déménager.

Le problème c'est que sur ce domaine j'héberge 4 sites différents, et que seul celui à la racine est concerné par le déménagement. Cela m'interdit donc d'utiliser un .htaccess, car cela perturberait mes autres sites, qui n'ont rien à voir avec le NDD que j'ai acheté... Cette solution simple écartée, il reste la plus compliquée, à savoir celle consistant à placer une redirection HTML sur chaque page de lon site Free pour renvoyer l'utilisateur vers le nouveau....mais j'ai 800 pages...

J'ai eu une idée, mais n'ai pas trouvé de réponse. Peut-on utiliser une page 404 en y intégrant une redirection 301. Google et Yahoo feront-ils attention à la rédirection ?

Merci

RG
 
WRInaute accro
Bonjour,

Faire la redirection dans le .htaccess me semble la meilleure solution. Je ne vois pas en quoi le fait que certains répertoires ne doivent pas être redirigés est un problème. Il devrait être possible d'en tenir compte dans les conditions de redirection.

Jean-Luc
 
WRInaute discret
jeanluc a dit:
Il devrait être possible d'en tenir compte dans les conditions de redirection.

Jean-Luc

J'ai lu qu'on ne pouvait pas faire d'exception à la redirection via htaccess...
 
WRInaute accro
Tu parles de restrictions propres à Free ? Ailleurs il n'y a pas de problème, à condition d'utiliser les bonnes directives.

Jean-Luc
 
WRInaute accro
Tu as probablement lu que
Code:
RedirectPermanent / http://www.new-domain.com/
s'applique à tout le site. C'est exact, mais il y a d'autres solutions.

Il faudrait voir du côté de
Code:
RewriteRule modèle_avec_condition http://www.new-domain.com/$1  [QSA,L,R=301]
ou du côté de
Code:
RewriteCond %{variable-serveur} condition
puis la redirection sur la ligne suivante

Pas le temps de regarder plus loin maintenant, mais il y a peut-être un expert en .htaccess dans les environs. :wink:

Jean-Luc
 
WRInaute discret
J'ai lu à plusieurs endroits (notamment ici) que l'utilisation d'une 404 avec une redirection 301 incluse était une bonne solution ? Exact ? Google aime ou pas ? Ca me parait le plus simple en tout cas...

Merci de votre aide
 
WRInaute accro
si tu l'a fait pour "r@main.guign@n..." on on obtient une page blanche
"HTTP 404 - Fichier non trouvé"
ce qui veut dire pas ta page 404, et pas de redirection :
cela ne fonctionne donc pas...

(je n'ai pas de solution pour toi, mais la réponse éventuelle m'intéresse)
 
WRInaute discret
En fait c'est normal que ça ne marche pas car je suis en phase de test. Comme mon NDD n'est pas encore valide, je suis toujours sur Free.
Je cherche juste une solution à mettre en place dès que j'ai mon NDD.
 
WRInaute accro
Je ne pense pas que ce mélange 404/301 fonctionne. Quelle est l'adresse où tu as testé ?

Si toutes les adresses à déménager sont de la forme http://romain.guigon.free.fr/nom-de-la-page.htm, tu pourrais essayer ceci (mais je ne sais pas ce qui est accepté ou pas par Free):
Code:
Options +FollowSymlinks
RewriteEngine on 
RewriteRule   ^[a-zA-Z_-]+\.htm$   http://www.nouveau-domaine.com/ [QSA,L,R=301]
Tous les appels à une page .htm du répertoire principal seront redirigés vers la page d'accueil du nouveau domaine. Les appels à des pages dans des sous-répertoires ne seront pas redirigés.

Jean-Luc
 
WRInaute discret
Bon et bien finalement j'ai trouvé autre chose qui parait plus fiable, même si c'est pas le plus simple :

RedirectMatch 301 Actualites.htm http://www.pers*-l*pla*gne.fr/Actualites.htm
RedirectMatch 301 ANG_Book.htm http://www.pers*-l*pla*gne.fr/ANG_Book.htm
RedirectMatch 301 ANG_Geography.htm http://www.pers*-l*pla*gne.fr/ANG_Geography.htm
RedirectMatch 301 ANG_History.htm http://www.pers*-l*pla*gne.fr/ANG_History.htm
RedirectMatch 301 ANG_index.html http://www.pers*-l*pla*gne.fr/ANG_index.html
RedirectMatch 301 ANG_Links.htm http://www.pers*-l*pla*gne.fr/ANG_Links.htm
RedirectMatch 301 ANG_News.htm http://www.pers*-l*pla*gne.fr/ANG_News.htm

...etc sur 300 pages

Comme ça au moins je vais pouvoir choisir les pages que je vais rediriger :)

Je pense que ça devrait aller ?
 
WRInaute discret
Free n'accepte l'url rewriting donc ça bloquera et fera une 500 selon toute probabilité.

Pourquoi n'essayes-tu pas dans le htaccess
Code:
ErrorDocument 404 /404.php

et
Code:
<?php
header("Status: 301 Moved Permanently");
header("Location: " . $_SERVER['HTTP_REFERER']);
exit;
?>
ou quelque chose d'approchant dans la page 404.php ?
 
WRInaute accro
Bonjour Jul-Wup,

Ça ne peut pas marcher parce qu'une URL ne renvoie jamais qu'un seul code. Donc si l'URL demandée renvoie un code 404, elle ne peut pas envoyer un 301.

Code:
ErrorDocument 404 /404.php
n'est pas une redirection. Cela fonctionne plutôt comme si c'était un include. Il y a l'envoi du code 404 à ce niveau, mais aucune redirection.

Si tu doutes, vérifie avec un outil de test d'en-tête HTTP.

Jean-Luc
 
WRInaute discret
jeanluc a dit:
Ça ne peut pas marcher parce qu'une URL ne renvoie jamais qu'un seul code. Donc si l'URL demandée renvoie un code 404, elle ne peut pas envoyer un 301.

Ben écoute, chez moi, ça affiche bien le referer.
Je viens de faire le test en local.
A vérifier sous Free :wink:
 
WRInaute accro
Si la redirection est suivie, c'est qu'aucun code 404 n'a été envoyé. Si tu mets ça en ligne, tu pourras vérifier avec un outil de test d'en-tête HTTP. :wink:

Jean-Luc
 
WRInaute discret
jeanluc a dit:
Si la redirection est suivie, c'est qu'aucun code 404 n'a été envoyé. Si tu mets ça en ligne, tu pourras vérifier avec un outil de test d'en-tête HTTP. :wink:

Jean-Luc

Tu as un exemple sous la main stp? Je suis perplexe. 8O

J'ai fais le test avec une page index.php
Code:
<?php
echo $_SERVER['HTTP_REFERER'];
?>
<a href="index.php">Index</a>
<a href="ex.php">Ex</a>

et une page 404.php
Code:
<?php
echo $_SERVER['HTTP_REFERER'];
?>

et le htaccess et ça me renvoit le referer. Bien sûr, ex.php n'existe pas.
 
WRInaute discret
Jul-Wup a dit:
Free n'accepte l'url rewriting donc ça bloquera et fera une 500 selon toute probabilité.

Ah si si ça marche impec :)
Toutes mes pages sont renvoyées vers l'URL. J'imagine que Yahoo saura interpréter ça correctement :)

Je suis lancé dedans donc je vais persévérer :)
 
WRInaute accro
Jul-Wup a dit:
Tu as un exemple sous la main stp? Je suis perplexe. 8O
Je n'ai pas d'exemple sous la main.

Pourrais-tu examiner le fichier log de ton serveur local ? Je serais étonné que tu y trouves un code 404, immédiatement suivi d'un code 301. Tu peux peut-être faire un copier/coller de quelques lignes de ton fichier log.

Jean-Luc
 
WRInaute discret
RG, ça a bien changé depuis que je ne suis plus là bas. Tant mieux ceci dit.


jeanluc a dit:
Jul-Wup a dit:
Tu as un exemple sous la main stp? Je suis perplexe. 8O
Je n'ai pas d'exemple sous la main.

Pourrais-tu examiner le fichier log de ton serveur local ? Je serais étonné que tu y trouves un code 404, immédiatement suivi d'un code 301. Tu peux peut-être faire un copier/coller de quelques lignes de ton fichier log.

Jean-Luc

J'ai ça dans le fichier logs.
Code:
127.0.0.1 - - [27/May/2006:17:21:25 +0200] "GET / HTTP/1.1" 200 3560
127.0.0.1 - - [27/May/2006:17:21:28 +0200] "GET /Essai/ HTTP/1.1" 200 1784
127.0.0.1 - - [27/May/2006:17:21:29 +0200] "GET /Essai/WRI/ HTTP/1.1" 200 91
127.0.0.1 - - [27/May/2006:17:21:32 +0200] "GET /Essai/WRI/ex.php HTTP/1.1" 302 329
127.0.0.1 - - [27/May/2006:17:21:32 +0200] "GET /Essai/WRI/404.php HTTP/1.1" 200 39

Apparemment, il me fait une 302?? 8O (le chiffre après le 302, le 200,c'est quoi?)
 
WRInaute accro
Quand tu demandes ex.php, le serveur répond par le code 302, c'est-à-dire qu'il demande à ton navigateur d'aller voir à l'adresse de redirection 404.php.

Puis, quand ton navigateur demande 404.php, le serveur répond par le code 200, c'est-à-dire qu'il a trouvé la page et il l'affiche.

C'est plus ou moins ce que j'attendais, sauf que je ne vois aucune trace de la redirection 301 de 404.php vers l'adresse du referrer (pourtant tu disais qu'il suivait cette redirection; on dirait que ta redirection 301 ne marche pas). D'après l'extrait du fichier log, finalement c'est 404.php qui s'affiche dans la barre d'adresse du navigateur; je suppose que c'est ce que tu constates.

Jean-Luc
 
WRInaute discret
jeanluc a dit:
on dirait que ta redirection 301 ne marche pas
je n'ai pas fait de 301. J'ai juste affiché le referer sur la page 404.php. Et c'est le cas. Si cela marche en local, pourquoi cela ne fonctionnerait-il pas sur Free? :roll:
Auquel cas une 301 sur cette 404.php vers le site final fonctionnerait. J'ai manqué une étape? 8O
 
WRInaute accro
En fait, quand tu auras installé ta redirection 301, tu vas commencer par envoyer une redirection 302 et la faire suivre par une redirection 301, comme ceci:

ex.php => 302 => 404.php => 301 => adresse_finale.php

Donc, tu n'envoies jamais de code 404 (page n'existe plus). Tu dis plutôt aux visiteurs que la page a changé d'adresse. En soi, c'est une bonne solution, mais tu le fais de façon compliquée puisqu'il y a deux redirections différentes pour arriver à la bonne nouvelle adresse. Peut-être que les robots de Google et Yahoo s'y retrouveront, mais c'est quand même risqué.

Jean-Luc
 
WRInaute discret
jeanluc a dit:
Tu dis plutôt aux visiteurs que la page a changé d'adresse. En soi, c'est une bonne solution, mais tu le fais de façon compliquée puisqu'il y a deux redirections différentes pour arriver à la bonne nouvelle adresse.

Ok, je comprends ce que tu veux dire. :wink:
A voir si le risque est pris pour le cas initial donc.
 
Discussions similaires
Haut