2010-07-04 9 views
1

J'essaie de pointer un sous-dossier d'un domaine à un autre sur mon vhost (mediatemple). Je veux utiliser des réécritures internes, pas des redirections 301. Voici le buthtaccess réécriture interne à travers les domaines?

http://www.clientdomain.com/blog/$1 --> http://www.mydomain.com/wpmu/clientdomain/$1 

Du côté du serveur, la structure ressemble à ceci:

/x/y/z/domains/clientdomain.com/html/blog/ -- htaccess file is here 
/x/y/z/domains/mydomain.com/html/wpmu/ -- wpmu installation 

Jusqu'à présent, je ne l'ai eu du succès avec 301 réoriente, mais mon but est de masquer des choses telles que wpmu peut alimenter le blog du client sans révéler son emplacement. Voici mon travail 301 redirection:

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/blog/ 
RewriteRule ^(.*)$ http://www.mydomain.com/wpmu/clientdomain/$1 [NC] 

Y at-il un moyen facile de le convertir en une réécriture interne? Je ne l'ai pas vu quelque chose, mais 301 pour ce type réoriente de chose ...

Merci à l'avance,

Casey

+0

Avez-vous essayé le chemin du système de fichiers absolu au lieu de l'URI? – Gumbo

+0

Je n'ai pas encore eu de succès avec ça; les chemins du système de fichiers sont-ils spécifiés différemment des URI dans htaccess? Lorsque j'utilise% {PATH_INFO} dans mon RewriteCond, la correspondance échoue. – Casey

+0

Les chemins du système de fichiers ne fonctionnaient pas car le mod_rewrite ne descendait pas en dessous de $ {DOCUMENTROOT} – Casey

Répondre

1

D'après ce que je peux dire, la seule façon d'y parvenir rewrite à travers des domaines vhosted est d'utiliser un lien symbolique entre les domaines pour tromper mod_rewrite en pensant qu'il fait une réécriture interne

-1

Ce que vous faites est une réécriture interne.

Pour une redirection 301 vous devez écrire [L, R = 301]:

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/blog/ 
RewriteRule ^(.*)$ http://www.mydomain.com/wpmu/clientdomain/$1 [L,R=301] 
+1

' www.mydomain.com' n'est pas le domaine sous lequel le 'RewriteRule' est en cours d'exécution, de sorte que la règle qu'il a va effectuer une redirection externe comme il l'a spécifié. –

+0

Ah, ok, maintenant je comprends. Alors la seule façon sans révéler le vrai URI est d'agir comme un proxy. Voir mod_proxy par exemple: http://httpd.apache.org/docs/1.3/mod/mod_proxy.html Ou utiliser des liens symboliques sur le système de fichiers ln -s /x/y/z/domains/clientdomain.com/html/blog//x/y/z/domains/mydomain.com/html/wpmu/ devrait aider – JochenJung

+0

J'ai fini par utiliser des liens symboliques, la réécriture entre les domaines ne fonctionne pas. – Casey