Les sous-domaines sont gratuits et illimités. Par defaut toto.votre-domaine.com pointe sur www.votre-domaine.com. Vous pouvez personnaliser ce comportement à l'aide d'un fichier .htaccess.
Les sous-domaines sont créés par défaut sur nos serveurs DNS. Tous les sous domaines pointent à la racine de votre site. A vous ensuite d'utiliser le mod_rewrite d'apache pour rediriger votre sous domaine là où vous le souhaitez.
Voici un exemple pratique pour illustrer la démarche :
Le .htaccess lui-meme :
RewriteEngine on
# redirection des sous-domaines
RewriteCond %{REQUEST_URI} !^/sdoms
RewriteCond %{HTTP_HOST} ^([^.]*)\.?([^.]+).([^.]+)$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)$ /sdoms/%1/$1
# fix trailing slash
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [L]
Pour donner quelques précisions, ce .htaccess redirigera automatiquement tout sous-domaine de la forme toto.domaine.com et ne commencant pas par “www” vers le sous-repertoire /sdoms/toto/ , et bien sur en conservant toto.domaine.com dans la barre d'adresse.
(Le sous-dossier /sdoms est surtout là avec la condition correspondante pour eviter des risques de redirections recursives.)
La dernière règle devrait eviter des problèmes de slash final
Edit : le “trailing slash” comme défini précédement pose quelques problèmes pour l'ouverture de sous-dossiers en appelant une url du type http://test.votre-domaine.com/toto (ou toto est un répertoire) ; voici une modification (soumise par renaud), qui semble règler ce problème :
##############################
# Non slash ended folder management trick
RewriteCond %{REQUEST_URI} !^/satellites
#seems to be a dir request without slash
RewriteCond %{REQUEST_URI} (/[^.]+)[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}/ [R=301,L]
##############################
Résultat :
Le site lui-meme reste tel quel : http://www.lordi-depanneur.com/
Premier sous-domaine de test : http://test.lordi-depanneur.com/
(on tombe donc sur la page index.html du répertoire /sdoms/test/)
Test avec un autre sous-domaine : http://test2.lordi-depanneur.com/
(on tombe donc sur la page index.html du répertoire /sdoms/test2/)
Test un peu plus complexe, avec un sous-repertoire dans le sous-domaine et une page autre que index.html :
http://test2.lordi-depanneur.com/rep/test3.html
(on tombe bien sur la page /sdoms/test2/rep/test3.html)
Et voici un autre exemple plus court (soumis par un client ;))
RewriteEngine on
# redirection des sous-domaines
RewriteCond %{REQUEST_URI} !^/sdoms
RewriteCond %{HTTP_HOST} ^([^.]*)\.?[^.]+\.[^.]+$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)$ /sdoms/%1/$1
Documentation Apache sur le mod_rewrite : http://httpd.apache.org/docs/1.3/misc/rewriteguide.html
Vous pouvez aussi changer d'offre en court d'abonnement sans problème.
Ajout : Pour faire pointer deux domaines différents sur le même hébergement Web1 avec un domaine pointant dans un sous-répertoire :
Essayez ca pour la configuration hypothétique suivante:
Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} www\.domaine-secondaire\.com
RewriteCond %{REQUEST_URI} !^/repertoire-secondaire
RewriteCond %{HTTP_HOST} ^([^.]*)\.?([^.]+).([^.]+)$ [NC]
RewriteCond %{HTTP_HOST} !^domaine-principal\.com$
RewriteRule ^(.*)$ /repertoire-secondaire/$1
Cas d'utilisation d'un domaine avec plusieurs TLD:
Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} www\.domaine-secondaire\.com\.tw
RewriteCond %{REQUEST_URI} !^/repertoire-secondaire
RewriteCond %{HTTP_HOST} ^([^.]*)\.?([^.]+)(\.[^.]+)+$ [NC]
RewriteCond %{HTTP_HOST} !^domaine-principal\.com$
RewriteRule ^(.*)$ /repertoire-secondaire/$1
Service Technique Web1