89 votes

.htaccess réécriture du sous-domaine vers le répertoire

Est-il possible d'utiliser le fichier .htaccess pour réécrire un sous-domaine en un répertoire ?

Exemple :

montre le contenu de

117voto

Ansari Points 5821

Essayez de mettre ceci dans votre fichier .htaccess :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteRule ^(.*)$ /subdomains/sub/$1 [L,NC,QSA]

Pour une règle plus générale (qui fonctionne avec n'importe quel sous-domaine, et pas seulement avec sub ) remplacez les deux dernières lignes par ceci :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ subdomains/%1/$1 [L,NC,QSA]

53voto

Lee Kowalkowski Points 6278

Je ne suis pas un expert en mod_rewrite et j'ai souvent du mal avec lui, mais j'ai fait cela sur un de mes sites. Il se peut que vous ayez besoin d'autres drapeaux, etc., en fonction de votre situation. J'utilise ceci :

RewriteEngine on

RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteCond %{REQUEST_URI} !^/subdomains/subdomain
RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L]

Toute autre règle de réécriture pour le reste du site doit être placée après pour éviter qu'elle n'interfère avec les réécritures de votre sous-domaine.

22voto

starkeen Points 29161

Vous pouvez utiliser la règle suivante dans .htaccess pour réécrire un sous-domaine en un sous-dossier :

RewriteEngine On

 # If the host is "sub.domain.com"
 RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
 # Then rewrite any request to /folder
 RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]

Explication ligne par ligne :

  RewriteEngine on

La ligne ci-dessus indique au serveur d'activer le moteur de réécriture des URL.

  RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]

Cette ligne est une condition pour la RewriteRule où nous faisons correspondre l'hôte HTTP en utilisant un motif regex. La condition dit que si l'hôte est sous.domaine.com puis exécuter la règle.

 RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]

La règle correspond à http://sub.domain.com/foo et le redirige en interne vers http://sub.domain.com/folder/foo .

Remplacer sous.domaine.com avec votre sous-domaine et folder avec le nom du dossier vers lequel vous voulez faire pointer votre sous-domaine.

8voto

Pablo Torrecilla Points 433

J'ai eu le même problème, et j'ai trouvé une explication détaillée dans http://www.webmasterworld.com/apache/3163397.htm

Ma solution (le contenu des sous-domaines doit se trouver dans un dossier appelé sd_subdomain :

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} subdomain\.domain\.com
RewriteCond $1 !^sd_
RewriteRule (.*) /sd_subdomain/$1 [L]

4voto

jmsmarcelo Points 75

Cela redirige vers le même dossier vers un sous-domaine :

.httaccess

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/subdomains/%1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X