Ça peu pas vraiment marcher.
Le $ indique la fin de la chaîne, donc, faut le mettre éventuellement à la fin, pas au milieu.
Ensuite, il faut utiliser des parenthèses capturantes pour récupérer une valeur, du coup, ça serait plutôt :
- Code: Tout sélectionner
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9_-]+)\.example\.com$ [NC]
RewriteRule ^(.*) page.php?id=%1 [NC,L]
Et cela, dans la mesure ou les sous domaines en question sont bien configurés à chaque fois, il faut que test.example.com existe est point dans le même dossier que -www.example.com dans lequel doit se trouver page.php.
Si non, il faut en plus utiliser le module apache vhost-alias, qui doit donc êtré installé, pour configurer à la volée des sous domaines, quel qu'il soit.
Dans le VHOST, ça donne ça :
- Code: Tout sélectionner
<VirtualHost *>
ServerName example.com
ServerAlias *.example.com
VirtualDocumentRoot /var/www/$1
</VirtualHost>
en plus du reste bien entendu.
A noter que l'utilisation du vhost-alias de cette façon va faire que tous les sous domaines possibles seront renvoyé vers page.php. A lui donc de vérifier la validité de la requête et de renvoyer une 404 quand le sous domaine ne doit pas exister, c'est une sage précaution pour éviter de se retrouver avec un domaine indexé comme addidas.example.com, ce qui pourrait conduire à des souci de propriété intellectuelle assez compliqués
++