2012-04-21 4 views
0

J'ai un serveur Apache avec deux domaines (via VirtualHost) dessus.
La configuration du fichier est comme ceci: /example1/example2/
example1 est la racine pour www.example1.com
example2 est la racine pour www.example2.com
Je voudrais que www.example1.com/example2/<whatever else> rediriger vers www.example2.com/<whatever else>
J'ai accès au fichier de configuration Apache. Aucune astuce sur comment le faire? Je ne suis pas très familier avec la configuration d'Apache, donc toutes les explications seraient très appréciées.Comment rediriger un répertoire vers un autre domaine avec Apache?

Les autres questions liées à celui-ci manquaient d'explications, alors j'ai senti que je devais poster ma propre question.

Répondre

3

Vous pouvez utiliser un fichier .htaccess pour le faire assez rapidement. Dans www.example1.com/example2/, vous devez créer ce fichier .htaccess.

<VirtualHost *:80> 
    ... 
    <Directory /path/to/vhost/> 
     RewriteEngine on 
     RewriteBase /example2/ 
     RewriteRule ^(.*)$ http://www.example2.com/$1 [R=301] 
    </Directory> 
</VirtualHost> 

Cela ne suppose que vous voulez que la redirection soit un 301, et que le dossier a example2AllowOverride All ensemble.

Cette règle fonctionne en utilisant regex pour capturer l'URL entrante, sans le bit example2, puis en l'ajoutant à l'URL réécrite. Les crochets R indiquent à Apache d'utiliser un en-tête Location pour l'URL réécrite. Le =301 indique à Apache d'utiliser un en-tête de redirection permanente 301.

+0

Je préfère ne pas utiliser le fichier .htaccess si je n'ai pas, alors comment aurais-je mis cela dans la configuration principale fichier? Aussi, comment cela fonctionne-t-il? – Yoshiyahu

+0

Eh bien, après avoir fait quelques recherches, le RewriteEngine, etc devrait être dans '' Aussi, l'expression régulière n'est pas valide. Le '?' Le rejette. Comme c'est le cas maintenant, je peux seulement obtenir une boucle de redirection pour example2.com – Yoshiyahu

+0

Une boucle infinie? Avez-vous ajouté ceci aux deux vhosts? Ou même l'exemple2 vhost? –

0

Si mod_alias actifs ont Tou, vous pouvez utiliser la directive Redirect:

<VirtualHost *:80> 
    ServerName example1.com 
    Redirect 301 /example2 http://www.example2.com 
</VirtualHost> 
Questions connexes