Pour rediriger avec Apache n'importe quel domaine vers www.leDomaineQuelconqueApppelé.extension, il vous faudra activer le module rewrite en incluant dans votre configuration LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

Sous Debian, rajouter un lien symbolique dans mods-enabled qui pointe sur mods-available/rewrite.load

Ensuite il faudra éditer le host ou vhost qui écoutera les réponses et se chargera d'effectuer les redirections selon les règles que nous allons définir. En général il s'agira du site par défaut : sites-available/default que j'ai réduit à ses plus simples instructions de redirect :

<VirtualHost *:80>
        RewriteEngine on
        RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>

Relancez Apache, et faite vous plaisir à accès à vos sites sans avoir besoins de taper l'alias www. Vous venez d'activer une redirection permanent (301) vers votre domaine avec l'alias www en préfixe.

Information sur les drapeaux/flags (options entre [])

[flags]

A la directive RewriteCond. Flags est une liste de commutateurs ci-après définis séparés par des virgules :

  • 'nocase|NC' (Pas de casse : no case) La casse est indifférente dans ce cas, c'est-à-dire qu'il n'y aura aucune différence entre les lettres 'A-Z' et 'a-z', que ce soit dans la chaîne TestString ou CondPattern.
  • 'ornext|OR' (ou condition suivante) Utilisez ce commutateur pour lier deux conditions.

A la directive RewriteRule. Flags est une liste de commutateurs ci-après définis séparés par des virgules :

  • 'redirect|R[=code]' (force la redirection) Préfixez substitution par une chaîne de type http://cetHôte[:cePort]/ (qui fait de cette nouvelle URL une URI) pour forcer une redirection externe. Si aucun code n'est mentionné, un code de réponse HTTP 302 (MOVED TEMPORARILY) sera utilisé par défaut. Si vous souhaitez renvoyer un autre code de réponse, dans les séries 300 ou 400, mentionnez ce code sous forme numérique ou utilisez l'une des constantes symboliques ci-après : temp (défaut), permanent, seeother. Utilisez cette fonction pour des règles qui auraient tendance à canoniser les URL et les renvoyer ainsi au client, ex. qui traduisent "/~" en "/u/" ou ajoutent systématiquement un slash à /u/user, etc.
  • 'forbidden|F' (force l'URL à apparaître comme interdite : forbidden) Ceci force l'URL courante sur l'URL interdite, c'est à dire que le serveur enverra immédiatement une réponse HTTP de code 403 (FORBIDDEN). Utilisez ce commutateur en conjonction avec des directives RewriteConds appropriées pour bloquer l'accès à certaines URL sous certaines conditions.
  • 'gone|G' (force l'URL à apparaître comme une redirection définitive : gone) Ceci force une réponse HTTP de code 410 (GONE). Utilisez ce commutateur pour marquer que les ressources demandées ont définitvement "déménagé".
  • 'last|L' (dernière règle : last rule) Arrête le traitement de réécriture en ce point et n'applique plus aucune règle de réécriture postérieure. Ceci correspond à l'instruction Perl last ou au break du C dans une boucle. Utilisez ce commutateur pour éviter que l'URL réécrite par cette règle ne soit à son tour modifiée une nouvelle fois par d'autres règles pour lesquelles le motif pourrait correspondre. Par exemple, vous pouvez l'utiliser pour réécrire l'URL d'accès à root ('/') vers une URL opérationnelle, comme '/e/www/'.

Ressources