如何配置 Apache 2 以拥有 2 个带有嵌套 documentRoot 的站点?

如何配置 Apache 2 以拥有 2 个带有嵌套 documentRoot 的站点?

我需要以下配置:

  • 访问project/www/index.phpURL 为site.dev/index.php
  • project/www/admin/index.php访问以下网址的页面site.dev/admin/index.php,并admsite.dev/index.php

/etc/apache2/sites-available/site我有以下文件:

<VirtualHost site.igoru.dev>
        ServerAdmin webmaster@localhost
        ServerName site.igoru.dev
        DocumentRoot /var/www/site/www
        ErrorLog /var/log/apache2/error.site.log
        CustomLog /var/log/apache2/access.site.log combined
</VirtualHost>

<VirtualHost admsite.igoru.dev>
        ServerAdmin webmaster@localhost
        ServerName admsite.igoru.dev
        DocumentRoot /var/www/site/www/admin
        ErrorLog /var/log/apache2/error.site.log
        CustomLog /var/log/apache2/access.site.log combined
</VirtualHost>

当我重新启动 Apache 时,它​​说第一个虚拟主机与第二个虚拟主机重叠,并且第一个虚拟主机优先。“也许您需要一个 NameVirtualHost 指令”。当我打开 URL 时,两个都指向 www/index.php 文件。

我读了一些关于该指令的文档,但对我没有帮助。
我对 Apache 配置不太熟悉,希望有人能帮我解决这个问题。

提前谢谢。

答案1

由于您的VirtualHost块指向主机名,因此它们将绑定到进入这些名称解析到的地址的每个请求。据推测,这些解析到同一个地址,因此第一个块获取地址,而第二个块什么也没有。

您可能已经NameVirtualHost在某处有一个指令;检查ports.conf。如果没有,请设置一个(NameVirtualHost *:80),然后更改您的VirtualHost块以匹配为主机头配置的名称:

<VirtualHost *:80>
        ServerName site.igoru.dev
        ...
</VirtualHost>
<VirtualHost *:80>
        ServerName admsite.igoru.dev
        ...
</VirtualHost>

相关内容