2009-02-09 6 views
1

J'ai un sous-domaine que je souhaite rediriger vers un emplacement différent à l'aide de mod_rewrite. Par exemple:Réécriture du sous-domaine CNAME

subdomain.example.com -> www.example.com/subdomain

Je ne veux pas envoyer une redirection au navigateur si (il ne sait pas que la page est différente) .

BTW subdomain.example.com a un enregistrement CNAME pointant vers example.com.

Modifier

Un autre exemple, juste pour clarifier. C'est très simple: Si http://x.abc.com est entré dans le navigateur, Apache renvoie le contenu de http://www.abc.com/x.

Répondre

1

En plus de ce que Gumbo a indiqué ci-dessus, vous pouvez utiliser l'instruction VirtualDocumentRoot d'Apache pour mapper dynamiquement l'URL vers un emplacement dynamique sur le disque. Il vous permet d'utiliser des parties de l'URL pour créer un chemin sur le disque. Consultez ce lien pour plus d'informations:

http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html

Exemple:
URL = http://sub.example.com/dir/page.html
Server Path = /var/www/site.com/htdocs/sub/dir/page.html
VirtualDocumentRoot = /var/www/%-2.0.%-1.0/htdocs/%-3/

3

Si les deux domaines partagent le même répertoire, vous pouvez le faire réécrire les demandes internes:

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

Après a été clarifié la question: Celui-ci fonctionne pour moi:

RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ 
RewriteCond %1.%{THE_REQUEST} ^([^.]+)\.[A-Z]+\ (/[^\ ]*) 
RewriteCond %{DOCUMENT_ROOT}$1 !-d 
RewriteRule ^([^/]+)? %1%2 

Mais vous feriez mieux d'aller avec ce que dit Brandon.

+0

Je ne suis pas sûr que je suis votre exemple ci-dessus, mais ce que je veux faire est très simple: Si http://x.abc.com est entré dans le navigateur, Apache renvoie le contenu de http://www.abc.com/x. Merci! –

0
RewriteCond %{HTTP_HOST} ^([^.]+)\.abc\.com$ 
RewriteRule ^(.*)$  http://www.abc.com/%1$1 [R=301]