Tutoriels >> Nos tutoriels sur la programmation Nos tutoriels sur la programmation >> Apprennez à créer votre site web Apprennez à créer votre site web >> Comment faire une redirection automatique avec le www ? Comment faire une redirection automatique avec le www ?

Comment faire une redirection automatique avec le www ?




Chapitre 1: Redirection en .htaccess



Nous allons voir comment faire des redirections d'une url (adresse) à une autre. C'est particulièrement pratique pour éviter d'avoir plusieurs pages identiques. En effet si http://apprendre-informatique.com et http://www.apprendre-informatique.com mène à la même page, il est utile de songer à rediriger une des 2 adresses vers l'autre. Ici, nous allons automatiquement rediriger vers l'adresse avec le www.

Du .HTACCESS



Pour commencer, connecter vous à votre FTP de votre site web et allez à la racine. Créer un fichier .htaccess et insérez le code suivant :

  • Citation: .htaccess
    RewriteEngine On


Cette ligne va permettre d'activer le moteur de règle de réécriture des URL.

  • Citation: .htaccess
    RewriteCond %{HTTP_HOST} ^apprendre\-informatique\.com$


  • RewriteCond permet d'écrire une condition. Si cette condition est vraie, la ligne suivante sera exécutée. Sinon, elle sera ignorée.
  • %{HTTP_HOST} est une variable créé par Apache au moment de la requête du visiteur et qui contient l'adresse d'hôte tappé par votre visiteur dans son navigateur. Donc, elle va contenir soit apprendre-informatique.com soit www.apprendre-informatique.com.
  • ^apprendre\-informatique\.com$ est l'adresse qu'on souhaite tester. Si ce test est positif, alors la ligne après sera exécutée (à cause du RewriteCond).
    Le ^ indique le début de l'adresse et le $ en indique la fin.
    Les backslashes (\) précisent à Apache que le caractère suivant n'est pas un caractère spécial. En effet, rappelez vous que le tiret (-) sert à indiquer un intervalle. Comme ce n'est pas le cas ici, on doit empêcher qu'il soit interprété comme un caractère spécial, donc on ajoute le backslashe. Idem pour le point (.) qui indique n'importe quoi, ici c'est un vrai point donc on doit préciser que ce n'est pas non plus un caractère spécial en ajouter un backslashe avant le point.


  • Citation: .htaccess
    RewriteRule ^(.*)$ http://www.apprendre-informatique.com/$1 [QSA,L]


Comme on l'a vu ci-dessus, si la condition du RewriteCond est vraie (c'est-à-dire si l'adresse d'hôte est apprendre-informatique.com) alors notre RewriteRule sera exécuté. Et devinez ce que le RewriteRule va faire ? Réécrire l'adresse avec un www ! Voici les explications :

RewriteRule permet de faire une règle de réécriture.
Le ^ et $ marque respectivement le début et la fin de l'adresse.
Le (.*) permet de stocker tout dans une variable $1 et contiendra l'adresse de la page.
Attention, ici il s'agit bien de l'adresse de la page et non de l'adresse d'hôte ! Par exemple si vous tappez http://apprendre-informatique.com/index.html alors ce sera index.html.


http://www.apprendre-informatique.com/$1 est l'url qu'on veut réécrire. Donc ici on a bien ajouter le www et le $1 est l'adresse de la page (donc index.html par exemple mais ça peut être n'importe quoi d'autre). Finalement, le [QSA,L] sont des flags. Ici on en a deux.
Le QSA permet de rediriger l'intégralité de l'url. Exemple : index.php?id=25. Sans le QSA, seul index.php serait prit en compte.
Le flag L permet de signaler la fin de la règle de réécriture.

Une redirection permanente, c'est mieux !



On a vu comment réécrire une url mais on a un gros problème, Apache créé par défaut des redirections de type temporaire. Est-ce un vrai problème ? Non, pas visuellement mais votre référencement sera moins bon. Pour remédier à ce problème, il faut la déclarer comme redirection permanente (c'est-à-dire une redirection de type 301).
Et c'est facile ! Il suffit simplement de rajouter le flag R=301 dans règle de réécriture.
La ligne deviendra donc :

  • Citation: .htaccess
    RewriteRule ^(.*)$ http://www.apprendre-informatique.com/$1 [QSA,R=301,L]


Conclusion



  • Citation: .htaccess
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^apprendre\-informatique\.com$
    RewriteRule ^(.*)$ http://www.apprendre-informatique.com/$1 [QSA,L]


où vous remplacez apprendre\-informatique\.com par votre domaine en tenant compte des caractères spéciaux et ajoutez judicieusement un \ devant ceux-ci.

Voilà, ce n'était pas si compliqué que ça ! Notez que j'ai également rédigé un cours sur la réécriture d'url : l'url rewriting.

Le résultat



Vous pouvez maintenant tappez dans votre barre d'adresse n'importe quel url sans les www.

Barre d'adresse sans www

Et lorsqu'on tappe sur Enter, voici ce qu'il se passe :

Barre d'adresse automatiquement redirigé sur la page avec www devant

Comme vous le voyez, la page est instantanément redirigé vers la bonne addresse.
Comment faire une redirection automatique avec le www ?
Auteur Grégory Bastin
Date de création 11/07/2012 à 16h05
Dernière date d'édition 15/10/2012 à 22h40
Avancement 100 %
Nombre de fois consultés 13293
Commentaires Ajouter un commentaire
Affichage complet du tutorial
Connecté(s) 1 connectés (0 membres, 1 invités)