Apache 虚拟主机目录指令在第二个虚拟主机上被忽略

Apache 虚拟主机目录指令在第二个虚拟主机上被忽略

我有一个 Centos 网络服务器,上面设置了 2 个网站。最初它只有一个网站,虚拟主机配置被添加到 httpd.conf 文件的末尾。我知道这不是最佳实践,但它运行良好,如下所示。

<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
#ServerAdmin [email protected]
DocumentRoot /var/www/html/example/
ErrorLog /var/log/httpd/example_error.log
CustomLog /var/log/httpd/example_access.log combined
#loglevel warn
<Directory />
    #Options Indexes FollowSymLinks
    #AllowOverride None
    #Require all granted
    Options Indexes FollowSymLinks MultiViews
    Allowoverride All
    Order allow,deny
    allow from all
</Directory>

添加了第二个开发网站,它是第一个网站的副本,并在 httpd.conf 文件中第一个网站的正下方创建了虚拟主机,如下所示:

<VirtualHost *:80>
ServerName dev.example.com
ServerAlias dev.example.com
DocumentRoot /var/www/dev.example.com/html
#ErrorLog /var/log/httpd/dev.example.com/error.log
#CustomLog /var/log/httpd/dev.example.com/requests.log combined
<Directory />
    #Options Indexes FollowSymLinks
    #AllowOverride None
    #Require all granted
    Options Indexes FollowSymLinks MultiViews
    Allowoverride All
    Order allow,deny
    allow from all
</Directory>

第二个虚拟主机配置肯定被读取,因为它显示开发网站,但目录指令似乎被忽略了。

我也尝试过明确说明第二个目录路径

 <Directory /var/www/dev.example.com/html>

然而它再次被忽视了。

我在第二个站点的设置中遗漏了允许读取目录指令的某些内容吗?

答案1

Directory / 指的是服务器的根目录。尝试使用 Location / 来引用特定于虚拟主机的 URL。

答案2

感谢上述两位提供的信息。我惊讶地发现,一个网站可以运行,而另一个则无法运行,因为配置文件设置不正确。我以为这两个网站都无法运行。

  1. 从虚拟主机部分删除目录指令。
  2. 使目录路径明确,即

    <Directory /var/www/dev.website1.com/html>

  3. 保留 allowoverride all 不变。

  4. 重新启动服务。

此外,虽然一个网站可以运行,但另一个网站无法运行,直到两个网站目录指令都设置了明确的路径后,它才开始运行。

答案3

你可以使用这个代码

<VirtualHost *:80>
        ServerName gandom.local
        ServerAlias www.gandom.local
        DocumentRoot /var/www/html/gandom
        <Directory /var/www/html/gandom>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>

相关内容