Есть ли способ перенаправить путь в apache2 на другой виртуальный хост - PullRequest
0 голосов
/ 08 июля 2011

У меня есть несколько виртуальных хостов, работающих на одной машине, и я хотел бы переопределить один путь с одного виртуального хоста на другой. Первоначально я планировал использовать переписывание модов, но я застрял на абсолютном URL.

Мне бы хотелось следующее поведение (без использования перенаправлений 301):

http://sub1.example.com/sub2 -> sub2.example.com virtual host
# Everything but sub2/.*
http://sub1.example.com/     -> sub1.example.com virtual host
http://sub2.example.com/     -> sub2.example.com virtual host

Я тестировал это со следующей конфигурацией:

<VirtualHost *:80>
  <Directory /var/lib/wsgi>
    Order allow,deny
    Allow from all
   </Directory>

   ServerName sub1.example.com
   WSGIScriptAlias / /var/lib/wsgi/sub1.wsgi
   WSGIDaemonProcess sub1 display-name=%{GROUP}
   WSGIProcessGroup sub1

   RewriteEngine on
   RewriteRule ^/sub2/(.*)$ http://sub2.example.com/sub2/$1 [PT]

</VirtualHost>

<VirtualHost *:80>
  <Directory /var/lib/wsgi>
    Order allow,deny
    Allow from all
   </Directory>

   ServerName sub2.example.com
   WSGIScriptAlias / /var/lib/wsgi/sub2.wsgi
   WSGIDaemonProcess sub2 display-name=%{GROUP}
   WSGIProcessGroup sub2
</VirtualHost>

Я запускаю приложение Python WSGI в каждом поддомене. При доступе к http://sub1.example.com/sub2 apache2 возвращает «400 Bad Request» и помещает это в файл журнала.

[Fri Jul 08 16:09:05 2011] [error] [client 127.0.0.1] Invalid URI in request GET /sub2/ HTTP/1.1

Я также пытался использовать ServerPath внутри домена sub2, но это также не работает.

1 Ответ

1 голос
/ 08 июля 2011

Если вы не выполняете какие-либо модификации / необычные совпадения с URL, почему бы не попробовать

<VirtualHost ...>
    // sub1 site
    Redirect /sub2 http://sub2.example.com
</VirtualHost>

mod_rewrite - тяжелая артиллерия, когда все, что вам действительно нужно, - стрелок из гороха.или используйте псевдоним:

Alias /sub2   /full/path/to/equivalent/directory/in/sub2
...