Memo: SetEnvIf apache2 + lang + country + environnement + projet

Un petit mémo pour une chose que je cherchais à faire depuis pas mal de temps.

Un virtualhost apache qui déclare certaines variables d’environnement de manière automatique en fonction d’une url normalisée.
Quand vous faites des sites internet internationaux avec environnement de dev, preprod et prod, il est souvent utile d’avoir des urls à rallonge du type:

http://codeLangue.codePays.nomProjet.Environnement.server.mondomaine.tld/

Ce qui donne par exemple :

http://fr.fra.projetX.dev.server.mondomaine.tld/
http://de.CHE.projetX.dev.server.mondomaine.tld/

Utilisons les iso-639-1 et iso-3166-3 pour simplifier et normaliser les choses.

Voici le bout de code Apache qui est utilisé, le tout est dans le SetEnvIf avec la regexp qui va bien.


  ServerName  server.mondomaine.tld
  ServerAlias    *.server.mondomaine.tld
  # format : lang.country.usr.environnement.*
  SetEnvIf Host ^([^.]*)\.([^.]*)\.([^.]*)\.([^.]*)\.* lang=$1 country=$2 usr=$3 env=$4
  ...

Ensuite, vos variables sont accessibles en PHP:

$_SERVER['lang'] => fr
$_SERVER['country'] => fra
$_SERVER['usr'] => projetX
$_SERVER['env'] => dev