Les redirections 301 - Comment ça marche ?

WRInaute discret
Salut à tous,

Il y a quelque temps j'ai posté pour un problème de redirection 301 que je n'arrivais pas à résoudre (cf. ce topic).

J'ai réussi à faire ma redirection en utilisant le code suivant :
Code:
RedirectPermanent /robotstats
 http://www.robotstats.com/

Mais je n'ai toujours pas compris le fonctionnement... Comment le navigateur ou le bot va-t-il interpréter ce message ? Comment fait-il pour aller à la bonne adresse ? J'ai hésité à mettre ce code dans mon htaccess car je ne comprends pas ce que vient faire ce "robotstats.com" au milieu...

Je me pose une autre question : j'ai fait ma redirection vers un .com. Mais si jamais j'achète un nom de domaine en .fr, et que je veux rediriger mon .com vers le .fr est-ce que je dois toujours utiliser ce même code ?

Enfin, bref, si vous pouvez éclaircir ce point, je vous en serais reconnaissant. Je n'aime pas faire des trucs que je ne comprends pas :?
 
WRInaute impliqué
ce code signifie que chaque fois que tu rentre dans le dossier /robotstats alors il va se diriger directement vers l'adresse que tu as indiquer plusbas.
 
WRInaute discret
en fait /robotstat est un dossier virtuel ?

si j'ai bien compris, si j'ai un nom de domaine en .fr, il faut mettre le code "robotstats.fr" ?
 
WRInaute discret
kapitoster a dit:
Mais je n'ai toujours pas compris le fonctionnement... Comment le navigateur ou le bot va-t-il interpréter ce message ? Comment fait-il pour aller à la bonne adresse ?

En fait le 301 Permanent Redirect c une commande pour ton server. Tu lui dis qu'a chaque fois que qq'un (robot ou hu8main) lance une requete pour une page ancienne, tu le rediriges vers la nouvelle page en envoyant une reponse de serveur qui lui dis - ancienne page n'existe plus elle a ete remplacé par nouvelle page.

Quand tu tapes une url qui existe, le serveur te renvoi une reponse 200
Quand tu tapes une url qui n'existe pas, le serveur te renvoi une reponse 404

C la meme chose ave le 301 - c une type de reponse de serveur.

Le format c normallement:

RedirectPermanent anciennepage.htm http://www.domain.com/nouvellepage.htm


kapitoster a dit:
Je me pose une autre question : j'ai fait ma redirection vers un .com. Mais si jamais j'achète un nom de domaine en .fr, et que je veux rediriger mon .com vers le .fr est-ce que je dois toujours utiliser ce même code ?

Oui tu mettras cette commande dans ton fichier htaccess sur le .com vers le .fr mais si tu gardes les meme nom de page utilise un RedirectMatch comme suis

RedirectMatch 301 ^(.*)$ http://www.newdomain.com$1

Ca veut dire - redirige toutes mes pages de ce site vers les pages du meme nom sur un autre domaine
 
WRInaute occasionnel
Salut à tous,

Donc dans le cas ou toutes les pages sont identiques, seul le nom de domaine change (ex : ancien.com devient nouveau.com), il vaut mieux mettre :

Code:
RedirectMatch 301 ^(.*)$ http://www.nouveau.com$1

Plutot que

Code:
RedirectPermanent anciennepage.htm http://www.nouveau.com/

??
 
WRInaute discret
oui dans le second cas uniquement les requetes vers anciennepage.htm iront vers la page d'accueil de ton nouveau domaine
 
WRInaute occasionnel
Est-il possible que l'hébergeur puisse limiter l'utilisation de htaccess ?
En effet, j'ai fait ceci :
Code:
RedirectPermanent anciennepage.php http://www.nouveau.com/nouvellepage.php
Mais aucun effet..

Je ne peux pas utiliser php (page dynamique qui en génère d'autres, il faut donc une redurection pour chaque page dans htaccess).

Mon fichier htaccess ressemble ainsi à cela :

Code:
setEnv PHP_VER 5

# Ajout du www. (anti DC)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^monsite.com$
RewriteRule ^(.*) http://www.monsite.com/$1  [QSA,L,R=301]

RedirectPermanent pageune.php http://www.monsite.com/nouvelle-pageune.php

le 301 sur le domaine fonctionne parfaitement, mais pas le deuxième... :s

Si quelqu'un avait une piste, mille merci de mille sabords ;)

Edit : oui, je passe mes journées à déterrer t'as vu :mrgreen:
 
WRInaute occasionnel
Ok, j'ai trouvé mon erreur. Si ça peut intéresser quelqu'un :

Il ne faut pas oublier le "/" avant l'adresse de l'ancienne page. Soit :
Code:
RedirectPermanent /anciennepage.php http://www.nouveau.com/nouvellepage.php
 
Discussions similaires
Haut