我有一个基本的 Apache2 配置,只启用了一个 VirtualHost。我已将 DocumentRoot 和 Directory 设置为引用我想要显示的网站的索引目录,但是当我在浏览器中打开服务器索引时,它指向 /home/user/public_html 而不是 /home/user/public_html/website
这是有意为之还是我的设置不正确?
这是虚拟主机设置:
<VirtualHost *:80>
DocumentRoot /home/user/public_html/website
<Directory /home/user/public_html/website/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
答案1
通过了解正在发生的事情,您可以用很多方法来解决这个问题。简化会有所帮助。如果只有 Web 虚拟主机部分并且它只服务于一个网站,那么为什么不使用默认配置文件并根据需要进行适当更改,完全不需要虚拟主机部分呢。这样,您将只有一个文档根目录,而新接触 apache httpd 的人通常会将 DNS 解析问题与虚拟主机混淆。要使虚拟主机正常工作,您需要有适当的 DNS。但如果您使用的是 ip,那么这并不重要。在这种情况下,Virtualhost 将不会执行 DNS 操作并最终无法提供服务,然后您将获得全局文档根目录的服务。我不确定这里是否是这种情况。我看到您有自定义访问日志,这是一个很好的举措。不要使用默认日志位置,而是仅在故障排除期间将虚拟主机访问日志更改为另一个位置,然后我们可以恢复。一旦您更改了访问日志位置,然后对两个访问日志(默认的全局访问日志和我们之前更改的虚拟部分访问日志)执行 tail -f,并确保它没有提供实际流量,我认为这里就是这种情况,然后点击虚拟主机网站并同时查看访问日志,您可以得出结论,流量流向哪个部分,从而隔离问题。一旦隔离,解决它应该是小菜一碟。一般来说,导致混乱的是错误配置的 DNS。但日志会告诉您所需的一切。这样,没有什么能像 apache httpd 那样更明确地给出问题的根源,而且也是使用默认配置。它显示了软件的质量和产品的成熟度。httpd 很棒。我已经在它上面投入了一年的时间,大约 3 年前,据我所知,没有什么大的变化,我仍然在关注 httpd 用户邮件列表。
希望有帮助