Назад | Перейти на главную страницу

Apache: сопоставьте один виртуальный хост с подкаталогом другого виртуального хоста

Я пытаюсь сопоставить один виртуальный хост с подкаталогом другого виртуального хоста, примерно так http://host2.com -> http://host1.com/host2. В этот момент, когда я иду в http://host2.com это соответствует http://host1.com вместо того http://host1.com/host2

Мой файл сайта по умолчанию - это

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName "host1.com"

 <Directory /srv/www/host1>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order deny,allow
    Allow from all
 </Directory>

 DocumentRoot /srv/www/host1
 WSGIScriptAlias / /srv/www/host1/apache/django.wsgi

 </VirtualHost>

<VirtualHost *:80>

    ServerAdmin webmaster@localhost
    ServerName "host2.com"
    DocumentRoot /srv/www/host1

    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>

    ProxyPass / http://host1.com/host2
    ProxyPassReverse / http://host1.com/host2

</VirtualHost>

Что мне не хватает? Я не уверен, имеет ли это значение, но я использую Django с wsgi.

На самом деле это можно сделать с помощью одного <VirualHost />, используя ServerAlias директива. Затем вы можете использовать RewriteRule передать эти запросы в соответствующий каталог и, оставив [R] вы просто переписываете запрос, оставляя URL без изменений.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName host1.com
    ServerAlias host2.com

    <Directory /srv/www/host1>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order deny,allow
        Allow from all
    </Directory>

    DocumentRoot /srv/www/host1
    WSGIScriptAlias / /srv/www/host1/apache/django.wsgi

    RewriteEngine On
    RewriteCond %{HTTP_HOST} host2\.com [NC]
    RewriteRule (.*) /host2$1 [L]
</VirtualHost>

Надеюсь это поможет.

Вот еще один пост, который может помочь: Редир

Я не тестировал это ниже, но вы поняли.

Вы можете использовать перенаправление:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.host2\.com [NC]

RewriteRule ^(.*)$ http://host1\.com\host2 [L,R=301]