我在我的开发系统上使用 VirtualDocumentRoot 设置,因此我可以轻松地处理多个项目,而无需一直更新 VirtualHosts。
目前看起来像这样:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
VirtualDocumentRoot /var/www/%1
ServerName everything.localhost
ServerAlias *.localhost
</VirtualHost>
因此我可以通过调用 foobar.localhost 来访问 /var/www 下面的目录。
问题是我现在也有使用不同文档根目录的项目,例如存储库中有另一个 src、pub 或 public 文件夹,因此我想使用这些文件夹,但每个项目都不同。因此,我的想法是使用另一个级别扩展 VirtualDocumentRoot:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
VirtualDocumentRoot /var/www/%1/%2
ServerName sub.everything.localhost
ServerAlias *.*.localhost
</VirtualHost>
因此我可以使用 src.foobar.localhost 等来调用这些项目。不幸的是,这与之前的规则相冲突,因此我无法再访问没有额外子目录的“旧”项目。
有没有办法在一个 apache 配置中同时处理这两个 VirtualHosts/VirtualDocumentRoots?
我已经有了一个想法,即拥有另一个基本域,例如用于子目录的 localhost2,因此 ServerAlias 只会匹配该规则,但这不是首选解决方案。
答案1
将实际根目录符号链接到原始 vhost 目录怎么样?
ln -sTv /var/www/fullrepo-project.localhost/pub /var/www/project.localhost