我正在尝试将一个虚拟主机映射到另一个虚拟主机的子目录,如下所示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>
我错过了什么?我不确定这是否重要,但我正在使用带有 wsgi 的 Django。
答案1
<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>
希望这可以帮助。
答案2
这是另一篇可能有帮助的帖子: 重新定位
我还没有在下面测试过这个,但是你应该明白了。
您可以使用重定向:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.host2\.com [NC]
RewriteRule ^(.*)$ http://host1\.com\host2 [L,R=301]