2009-02-28 3 views
3

J'ai un fichier que je veux rediriger vers un sous-domaine en utilisant mod_rewrite. Par exemple, je souhaite rediriger la demande de http://www.mydomain.com/xyz vers le sous-domaine xyz.example.comComment puis-je utiliser "mod rewrite" pour rediriger un chemin de dossier vers un sous-domaine, mais sans redirection de navigateur?

Je ne souhaite pas envoyer de redirection vers le navigateur (il ne sait donc pas que la page est différente).

BTW. xyz est un enregistrement CNAME, pointant vers www.otherdomain.com.

Un autre exemple, juste pour clarifier. Si http://www.mydomain.com/xyz/something est entré dans le navigateur, je veux Apache pour retourner le contenu de http://xyz.mydomain.com/something

Répondre

2

Je PENSE cela va faire ce que vous voulez à:

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^(.*?)/(.*?)$ http://$1.mydomain.com/$2 

Comme cela signifie qu'il va rediriger chaque demande que va à un sous-dossier, donc si vous les liens pour les images ou css qui se trouvent dans un sous-dossier, il sera également réécrire ceux-ci, si vous voulez inscrire seulement certaines choses que vous pouvez utiliser cette

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^(blog|store|other)/(.*?)$ http://$1.mydomain.com/$2 

Ceci ne redirigera que mydomain.com/blog/mondomaine.com/store/ et mydomain.com/other/

+0

Avez-vous également besoin de l'indicateur proxy [P] à la fin de RewriteRule? – jcrossley3

+0

N'avez-vous pas besoin de le démarrer avec un^/? – gahooa

+0

@ jcrossley3 - Je ne suis pas sûr @gahooa - un^oui mais pas un/ – UnkwnTech

1

Si les deux domaines se trouvent sur la même machine et sont accessibles par le système de fichiers, vous devriez procéder ainsi. Par exemple:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ 
RewriteRule ^([^/]+)/(.*) /absolute/path/to/subdomains/$1/$2 

Si ce n'est pas le cas, vous aurez besoin d'un proxy:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ 
RewriteRule ^([^/]+)/(.*) http://$1.example.com/$2 [P] 

Ces exemples sont pour un fichier BUT .htaccess. Si vous souhaitez les utiliser dans httpd.conf, préfixez les modèles RewriteRule avec un /.

+0

Toujours corriger le nom de domaine lors de l'application.Ceci est montré dans l'exemple mais je voulais souligner que les lecteurs devraient s'assurer de ne pas donner accès à d'autres domaines via le proxy; ceci a été fait en excluant/comme un caractère dans l'expression rationnelle et en donnant un accès proxy uniquement aux sous-domaines. – Energiequant