2010-01-16 2 views
0

dire donc j'ai une URL demandée:Comment utiliser mod_rewrite pour modifier le fichier récupéré en fonction du sous-domaine de l'URL?

sub.domain/file.bin

et je voulais que ce fichier soit tiré par les cheveux:

domain/hosted/sub/file.bin

Comment puis-je structurer les directives de réécriture? J'ai travaillé dessus pendant des jours, et cela me donne juste un mal de tête ...

Les sous-domaines sont nombreux et sont ajoutés et enlevés souvent, ainsi j'essaye de trouver une solution qui fonctionne pour tous d'eux.

Répondre

1

Dans la configuration httpd de sub.domain:

RewriteCond %{HTTP_HOST} ([^\.]+).domain 
RewriteRule ^/file.bin$ http://domain/hosted/%1/file.bin 
+0

Hmm, se rapprocher. Comment est-ce que je pourrais faire le "sub" dynamique basé sur quel que soit le sous-domaine dans l'URL initiale? – Cypher

1

En supposant que le répertoire personnel pour www.domain.com est domain/ et - donné aucun sous-domaine sub.domain.com - vous voulez que les fichiers pour les répertoires pour ce sous-domaine à être domain/hosted/sub/

Essayez quelque chose comme ceci:

RewriteEngine on 

// If the host is just mydomain.com, do nothing more 
// this is to prevent some recursion problems I've read of... 
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC] 
RewriteRule ^.*$ - [L] 

// Otherwise strip off everything before mydomain 
// And add it to the start of the request 
RewriteCond %{HTTP_HOST} ^(.*?)\.(www\.)?mydomain\.com$ [NC] 
RewriteRule ^.*$ %1%{REQUEST_URI} [QSA] 

// Then prefix with 'hosted' 
RewriteRule ^(.*)$ hosted/$1 [QSA,L] 

Vous pouvez aussi avoir besoin d'un i caractère générique n votre DNS ou quelque chose ... mais je vais admettre DNS et htaccess mod rewrite sont certains de mes points faibles. Voir aussi http://www.webmasterworld.com/forum92/138.htm

1

Essayez cette règle:

RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$ 
RewriteCond %1 !=www 
RewriteRule !^hosted/ hosted/%1%{REQUEST_URI} [L] 
Questions connexes