redirections
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | redirections [2016/09/28 19:18] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Redirections permanentes ====== | ||
+ | La redirection est une situation prévue par le protocole http. Autrement dit, quand on redirige une page, on ne bidouille pas pour que l' | ||
+ | Lorsque le navigateur d'une internaute (ou un moteur de recherche) demande une page qui a été déplacée, il ne faut pas lui répondre avec la nouvelle page mais lui dire : "cette page a été déplacée, vous la trouverez à //tel// endroit" | ||
+ | |||
+ | On confond souvent la redirection avec la notion de //nom de domaine canonique// | ||
+ | |||
+ | ===== Directement par Apache ===== | ||
+ | //La technique la plus clean.// Elle ne fait travailler que le serveur. | ||
+ | ==== En utilisant la directive de redirection ==== | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | * Créer un fichier nommé // | ||
+ | * Y indiquer les redirections suivant les exemples suivants : | ||
+ | |||
+ | Si l'on déplace toute l' | ||
+ | < | ||
+ | |||
+ | Si l'on ne déplace qu'une partie de l' | ||
+ | < | ||
+ | |||
+ | Si l'on ne déplace qu'une page | ||
+ | < | ||
+ | < | ||
+ | On peut utiliser un [[http:// | ||
+ | </ | ||
+ | |||
+ | ==== En utilisant le module de réécriture d'URL ==== | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | Dans le fichier .htaccess se trouvant à la racine de l' | ||
+ | |||
+ | < | ||
+ | RewriteEngine On | ||
+ | rewritecond %{http_host} ^yoursite.com | ||
+ | rewriteRule ^(.*) http:// | ||
+ | </ | ||
+ | |||
+ | ===== Redirection par programme ===== | ||
+ | La méthode est aussi //propre// que le paramétrage du serveur car, vu de l' | ||
+ | |||
+ | Par exemple, en PHP : | ||
+ | < | ||
+ | <? | ||
+ | header( “HTTP/1.1 301 Moved Permanently” ); | ||
+ | header( “Status: 301 Moved Permanently” ); | ||
+ | header( “Location: | ||
+ | exit(0); // Instruction optionnelle mais recommandée | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | ===== Masquer la redirection en HTML (frames) ===== | ||
+ | |||
+ | En HTML, il est **impossible** de faire une redirection. On ne peut que la simuler. Pour l' | ||
+ | |||
+ | Dans ces conditions, pourquoi indiquer cette technique ? Parce que si votre hébergeur vous interdit les fichiers // | ||
+ | ==== En utilisant les frames ==== | ||
+ | Les //frames// ont mauvaise presse, ce n'est pas une raison pour ne pas les utiliser ;-) | ||
+ | |||
+ | Le principe est le suivant : | ||
+ | |||
+ | * déplacer les pages à leur nouvelle url | ||
+ | * remplacer les pages se trouvant aux anciennes url par des pages de type [[http:// | ||
+ | |||
+ | On doit donc assurer la maintenance de deux ensembles de pages. Les pages " | ||
+ | |||
+ | Certains navigateurs peuvent refuser les frames et se rabattre sur la version no-frame de la page. | ||
+ | ===== Ne pas utiliser ===== | ||
+ | |||
+ | L'une des méthodes les plus utilisées pour traiter un problème de redirection est le recours à la balise html < | ||
+ | |||
+ | < | ||
+ | <meta http-equiv=" | ||
+ | </ | ||
+ | |||
+ | C'est pourtant la pire ! D'une part, elle n'est raisonnablement applicable que si un nombre limité de fichiers est déplacé. D' | ||
+ | |||
+ | ===== Nom de domaine canonique ===== | ||
+ | Sur un serveur Apache équipé du module mod_rewrite, | ||
+ | |||
+ | Voici l' | ||
+ | < | ||
+ | # Au cas où le nom de domaine est exploité sur plusieurs port | ||
+ | RewriteCond %{HTTP_HOST} | ||
+ | RewriteCond %{HTTP_HOST} | ||
+ | RewriteCond %{SERVER_PORT} !^80$ | ||
+ | RewriteRule ^/ | ||
+ | |||
+ | # Si seul le port 80 est exploité | ||
+ | RewriteCond %{HTTP_HOST} | ||
+ | RewriteCond %{HTTP_HOST} | ||
+ | RewriteRule ^/ | ||
+ | </ | ||
+ | |||
+ | Pour une description complète des // |