我正在尝试为Apache配置三个不同的VirtualHost,以便在有人请求相应的子域(例如,foo.example.com
)或相应的子文件夹(例如,example.com/foo
)时使用特定的VirtualHost。
我认为以下httpd.conf
可以解决问题,但是ServerAlias
指令只是被忽略了:
<VirtualHost *:80 *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /srv/http
</VirtualHost>
<VirtualHost *:80 *:443>
ServerName foo.example.com
ServerAlias example.com/foo
DocumentRoot /usr/share/web
</VirtualHost>
<VirtualHost *:80 *:443>
ServerName bar.example.com
ServerAlias example.com/bar
DocumentRoot /var/www/html
</VirtualHost>
当请求bar.example.com
时,将按预期使用第三个VirtualHost。但是,在example.com/bar
的情况下,尽管ServerAlias
,第一个VirtualHost仍然优先。同样,请求example.com/foo
匹配第一个VirtualHost,而不是第二个。
如何修复此配置以产生所需的行为?
答案 0 :(得分:0)
ServerAlias采用主机名,而不是主机名和路径。该机制无法完成您想要的操作。只需在要访问的虚拟主机中创建别名或重定向。