Bien souvent, la solution proposée pour ré-écrire une URL sans ‘www’ vers une URL avec est du type:

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

Mais c’est juste une solution qui complique la maintenance d’un hébergement utilisant des vhosts ou virtual hosts.

Avec un CMS comme Drupal , il est par exemple possible d’avoir le même code utilisé pour toute une pléïade de sites ayant des noms de domaine différents. Le .htaccess est partagé par tous les sites, et s’assurer que tous les sites dont la configuration DNS pointe vers l’installation Drupal unique sont correctement configurés peut s’avérer hasardeux et source d’erreurs.

Je vous propose une solution générique, quel que soit le nom de domaine:

# vérifier que HTTP_HOST n’est pas vide
RewriteCond %{HTTP_HOST} !^$ [NC]
# qu’il manque ‘www’
RewriteCond %{HTTP_HOST} !^www\. [NC]
# toujours vrai pour mémoriser la valeur de HTTP_HOST dans %1
RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
# construit la redirection à partir de l’URI (extraite de RewriteRule) et du nom de domaine (provenant de la dernière RewriteCond)
RewriteRule ^(.*)$ « http://www.%1/$1″ [L, R=301]
# et voilà !

Testé avec Apache 2.2.3.

Et chez vous, ça fonctionne ?

Average Rating: 4.7 out of 5 based on 153 user reviews.

Premier billet sur ce sujet, à suivre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>