Ce document est un complément à la documentation de référence du module
Nous voulons créer automatiquement un serveur virtuel pour tout nom d'hôte qui peut être résolu dans notre domaine, sans avoir à créer de nouvelle section VirtualHost.
Dans cet exemple, nous supposons que nous utilisons le nom d'hôte
SITE.example.com
pour chaque
utilisateur, et que nous servons leur contenu depuis
/home/SITE/www
. Nous souhaitons cependant que
www.example.com
n'apparaisse pas dans cette mise en correspondance.
La directive RewriteMap interne tolower
permet de
s'assurer que les noms d'hôtes utilisés seront tous en minuscules, de
façon à éviter toute ambiguité dans la structure des répertoires qui
doit être créée.
Les contenus des parenthèses utilisées dans une directive %1
, %2
, etc..., alors que
les contenus des parenthèses utilisées dans une directive $1
, $2
, etc...
La première directive RewriteCond
vérifie si le nom d'hôte
commence par www.
et si c'est le cas, la réécriture est annulée.
Comme c'est le cas pour de nombreuses techniques discutées dans ce
document, mod_rewrite n'est vraiment pas la meilleure méthode pour
accomplir cette tâche. Vous devez plutôt vous tourner vers
Cet extrait du fichier httpd.conf
permet d'obtenir
le même résultat que le premier exemple.
La première moitié est très similaire à la partie correspondante
ci-dessus, excepté quelques modifications requises à des fins de
compatibilité ascendante et pour faire en sorte que la partie
mod_rewrite
fonctionne correctement ; la seconde moitié
configure mod_rewrite
pour effectuer le travail
proprement dit.
Comme mod_rewrite
s'exécute avant tout autre module
de traduction d'URI (comme mod_alias
), il faut lui
ordonner explicitement d'ignorer toute URL susceptible d'être
traitée par ces autres modules. Et comme ces règles auraient sinon
court-circuité toute directive ScriptAlias
, nous devons
faire en sorte que mod_rewrite
déclare explicitement
ces correspondances.
Cette construction utilise des fonctionnalités plus avancées de
Le fichier vhost.map
devrait ressembler à ceci :
On doit ajouter à httpd.conf
: