Vous n’y avez peut être jamais pensé, mais votre site existe surement sous deux url. Et Alors ? Bein … Je vais vous le dire. Votre site existe sous sa forme originale (ex : f3re.com) mais il existe peut être aussi sous la forme www, qui est la forme commune a tout les sites ( ce qui donnerait www.f3re.com ). En quoi cela est il gênant ? Et bien, pour Google et les autres moteurs de recherche qui enregistre tout les sites, votre site est en fait, deux sites différents. Ce qui veut dire qu’il y a deux fois le même contenu sur le web, et que votre référencement n’est pas unis, mais divisé, ce qui fait que vos deux sites se battent en duels pour avoir la première place. Cet article donne les solutions pour les serveurs Apache, nginx, lighttpd et IIS. Pour forcer le sous-domaine www (et interdire l’indexation du site sans ce sous-domaine) :

Sur Apache

Mettez le code suivant en haut de votre fichier .htaccess situé à la racine du site

RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Si le code précédent ne fonctionne pas chez vous, essayez celui-ci (en remplaçant votresite.com par votre nom de domaine) :

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule (.*) http://www.example.com/$1 [QSA,R=301,L]

Selon les cas, il sera peut être nécessaire de retirer le « / » final du lien (troisième ligne) après votresite.com/

Sur IIS (serveur Microsoft)

<rewrite>
<rules>
<rule name= »Redirect to WWW » stopprocessing= »true »>
<match url= ».* »>
<conditions>
<add input= »{HTTP_HOST} » pattern= »^example.com$ »></add>
</conditions>
<action type= »Redirect » url= »http://www.example.com/{R:0} » redirecttype= »Permanent »></action>
</match>
</rule>
</rules>
</rewrite>

Sur nginx

server {
server_name example.com;
rewrite ^ $scheme://www.example$request_uri redirect;
}

Sur lighttpd

$HTTP["host"] =~ « ^example\.com$ » {
url.redirect = ( « ^/(.*) » => « http://www.example.com/$1″ )
}

Si à l’inverse, vous préférez garder la version sans www. (et interdire l’indexation du site avec ce sous-domaine) Utilisez ces codes :

Apache

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.([^.]+)$
RewriteRule ^(.*)$ http://%1.%2/$1 [R=301,L]

Si le code précédent ne fonctionne pas chez vous, essayez celui-ci (en remplaçant example.com par votre nom de domaine) :

RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com [NC]
RewriteRule (.*) http://example.com/$1 [QSA,R=301,L]

Last updated by at .