Pour un site, j’ai plusieurs noms de domaine (.be, .com, .eu…).
Sur un serveur Apache, je veux rediriger tout le trafic utilisateurs vers le nom de domaine principal, ici le .be.
De plus, je veux rediriger tous les accès vers ces domaines avec des URL en « www. » vers le nom court sans « www. ».
Des solutions existent avec des .htaccess et le module Apache « rewrite », mais une autre solution me semble plus simple : directement inclure cette redirection permanente dans le VirtualHost de ce site. Il parait qu’elle est un rien plus performante aussi, alors pourquoi s’en priver ?
Dans la définition de votre VirtualHost, commencez par définir le site principal, dans mon cas, c’est l’URL http://mobiloglass.be (sans le « www. ») :
sudo vi sites-available/mobiloglass.be
Définition très simple qui renvoi vers le dossier Drupal
<VirtualHost mobiloglass.be:80>
ServerName mobiloglass.be
DocumentRoot /home/didier/www/drupal
ErrorLog /var/log/didier/mobiloglass-error_log
CustomLog /var/log/didier/mobiloglass-access_log combined
</VirtualHost>
Ajouter après cette définition, un 2ème VirtualHost pour la redirection de tous vos autres domaines, ainsi que les URL contenant « www. »
(si vous voulez au contraire forcer le « www. », le principe reste le même, l’adaptation est simple)
<VirtualHost www.mobiloglass.be:80>
ServerName www.mobiloglass.be
ServerAlias www.mobiloglass.com mobiloglass.com www.mobiloglass.eu mobiloglass.eu www.mobiloglass.net mobiloglass.net
RedirectMatch permanent (.*)$ http://mobiloglass.be$1
ErrorLog /var/log/didier/mobiloglass-error_log
CustomLog /var/log/didier/mobiloglass-access_log combined
</VirtualHost>
Evidemment, adaptez les dossiers et les URL à votre configuration et à vos noms de domaines.
Pour activer ces définitions, il faut qu’Apache recharge ses configurations, mais d’abord tester s’il n’y a pas d’erreur ! Ce serait un peu domage de se retrouver avec une dizaine de sites Web en production, inaccessible, simplement à cause d’une petite erreur !
$ apache2 -t Syntax OK $ /etc/init.d/apache2 reload Reloading web server config...16476
Cela devrait fonctionner : tous les accès devraient aboutir sur des pages avec des URL http://mobiloglass.be/…
Effectivement, cela fonctionne… mais est-ce que le code donné sur l’accès initial, par exemple sur http://www.mobiloglass.com, est bien un code » 301 » redirection permanante ?
Il est possible de vérifier cela ! Un site, web-sniffer.net le permet.
Allez simplement sur la page de Web-Sniffer.net, et taper une URL dont vous voulez tester la redirection.
Dans mon cas, j’ai testé l’ URL http://www.mobiloglass.com/propos. Web-sniffer.net me dit ceci :
C’est correct, la redirection vers http://mobiloglass.be/propos est permanente avec un code 301.
C’est clair et propre
Merci à la liste de diffusion du Bxlug.be pour cette solution que je ne connaissais pas, en particulier à Frédéric, Laurent, Didrik, Fabrice et Giovani.














