Rediriger l'internaute si le www dans l'adresse de votre site n'est pas présent
Noter ce cours :
Description du problème
Bien souvent, en tant que Webmaster, vous constatez que votre site internet entier est accessible à deux adresses : http://www.votre-site.com (adresse généralement la plus utilisée) mais aussi http://votre-site.com. Oui, et alors ? me direz vous ...
Le problème majeur de cet accès autorisé est d'un point de vue référencement. En effet, soumettre deux fois la même page située à deux adresses différentes est considéré par les moteurs de recherche comme de la duplication de contenu, ayant pour conséquence la plupart du temps une désindexation ou un positionnement en bas de classement ce qui entraîne alors une non visibilité de la page dans les moteurs de recherche.
Résolution du problème sous apache
La plupart des webmasters utilisent le serveur web Apache dont vous trouverez sur le site un guide d'installation sous Linux Debian ainsi qu'un autre sous Windows. Nous allons choisir de rediriger l'internaute vers l'adresse en www (nous pourrions également lui empêcher l'accès ou lui montrer une page d'erreur, mais au niveau du référencement ce ne sont pas des solutions idéales. La redirection permanente aussi appelée redirection 301 est bien plus efficace).
La résolution du problème fait appel à la réécriture d'URL (URL Rewriting). Généralement, l'url rewriting est activé chez votre hébergeur. Si vous êtes sur un serveur qui n'a pas l'url rewriting d'activé, il faudra l'activer en suivant cette procédure : Activer l'URL Rewriting sous apache.
Maintenant que votre serveur est configuré pour tenir compte de la directive de réécriture que nous allons imposer, il ne nous reste plus qu'à créer un fichier nommé .htaccess situé à la racine de votre site. Ce fichier peut être créé avec n'importe quel éditeur de texte. Vous placerez dans ce fichier le code suivant :
RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.votre-site\.com [NC] RewriteRule (.*) http://www.votre-site.com/$1 [QSA,R=301,L]
Attention : si vous avez un ou plusieurs sous domaines (forum.votre-site.com par exemple) il faut les mentionner dans le fichier .htaccess sinon vos visiteurs seront redirigés vers l'adresse en www !).
RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.votre-site\.com [NC] RewriteCond %{HTTP_HOST} !^forum\.votre-site\.com [NC] RewriteRule (.*) http://www.votre-site.com/$1 [QSA,R=301,L]
Vous pouvez constater que différents drapeaux (flags) sont présents en bout de ligne (ils sont entre crochets). Les plus importants sont les flags QSA et R=301. Le premier indique que toutes les adresses comportant des variables (de la forme http://votre-site.com/mapage.php?variable=valeur) seront redirigées intégralement (et non pas simplement vers http://www.votre-site.com/mapage.php) tandis que le second flag (R=301) indique qu'une redirection permanente (de code 301 donc) est effectuée. Vous auriez pu aussi placer une redirection temporaire (R=302) mais cela est peu utile dans le sens ou une redirection permanente permet un meilleur référencement. Voici le contenu d'un fichier .htaccess exemple :
Si vous n'arrivez pas à enregistrer le fichier sous le nom .htaccess avec le bloc-notes ou sous Windows, nommez-le ".htaccess" (les guillemets sont importantes), il sera enregistré en tant que tel ;)