vhost.conf ,位于 etc/httpd/vhost.d/
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName localhost
ServerAlias localhost.example.com
DocumentRoot /var/www/html/example.com/public_html/
ErrorLog /var/www/html/example.com/logs/error.log
CustomLog /var/www/html/example.com/logs/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.org
ServerAlias www.example.org
DocumentRoot /var/www/html/example.org/public_html/
ErrorLog /var/www/html/example.org/logs/error.log
CustomLog /var/www/html/example.org/logs/access.log combined
</VirtualHost>
httpd.conf,默认设置,添加到最后:
Include /etc/httpd/vhosts.d/*.conf
根目录:
DocumentRoot "/var/www/html"
在上述文件夹中创建的虚拟主机的相应目录。所有权限看起来都正确。每个public_html
目录中都有 Index.php 文件。但是,当我输入 localhost 时,它只会将我带到默认的 apache 2 页面,我是否应该从默认目录中删除行Include /etc/httpd/vhosts.d/*.conf
webserver works as required,为我放在那里的任何索引文件提供服务。
答案1
根据输入的内容,您似乎没有语法错误。因此,请在 /etc/hosts 文件中执行以下操作(如果您直接从服务器执行此操作):
127.0.0.1 example.org
127.0.0.1 example.com
或者在你电脑的主机文件上:
YOURSERVERIP example.org
YOURSERVERIP example.com
并浏览到该域而不是本地主机。
您之所以只看到 apache 网页,是因为 Apache 需要知道要访问哪个页面 - 由于您尚未设置 DNS,因此不会向 Apache 发送任何与相关主机名相关的内容,因此它默认为文档根目录。
答案2
由于 Include 行位于 VirtualHosts 之后,我猜想其中一个包含的虚拟主机正在覆盖您的新虚拟主机。“httpd -S”说了什么?(它可能不是“httpd”,可能是“apache2”或其他内容)。-S 标志将显示您已配置的所有虚拟主机,并有助于调试。
您可以尝试删除包含行,看看这是否能让您的新块工作。您还可以检查错误日志,看看是否有关于您的配置文件的警告。