我在一台机器上运行了几个虚拟主机,我想覆盖从一个虚拟主机到另一个虚拟主机的一条路径。我最初的计划是使用mod重写,但我被困在绝对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
我也尝试在sub2域中使用ServerPath,但这也不起作用。
答案 0 :(得分:1)
如果您没有进行任何网址修改/花式匹配,为什么不尝试
<VirtualHost ...>
// sub1 site
Redirect /sub2 http://sub2.example.com
</VirtualHost>
当你真正需要的只是一个豌豆射手时,mod_rewrite是重型火炮。
那,或使用别名:
Alias /sub2 /full/path/to/equivalent/directory/in/sub2