У меня есть несколько виртуальных хостов, работающих на одной машине, и я хотел бы переопределить один путь с одного виртуального хоста на другой. Первоначально я планировал использовать переписывание модов, но я застрял на абсолютном 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, но это также не работает.