故障排除
“404 Not Found”通常意味着我们正在尝试访问不存在的内容或者我们提供了不正确的 URL。
注意 URL 中的尾随 /
,因为 http://localhost/opt
和 http://localhost/opt/
是两个不同的 URL。
如果我们不希望 URL 包含尾随的 /
字符,则需要从上面的 VirtualHost
配置的 Alias
指令中删除两个尾随的 /
字符。
AH01630: client denied by server configuration
错误日志表示由于访问控制配置不正确而拒绝访问。
对于低于 2.4 的 Apache Web 服务器版本,我们可能需要将访问控制更改为:
<Directory "/opt/www/"> Order allow,deny Allow from all </Directory>
此配置将显示一个基本示例,说明如何使用 Apache2 Web 服务器从除“DocumentRoot”目录之外的目录中提供内容服务。
让我们从一个简单的虚拟主机配置开始。
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <VirtualHost>
上面的 VirtualHost
配置将提供来自 DocumentRoot
目录的内容。
让我们创建一些基本页面来确认我们的设置:
# echo "Serving content from /var/www/html" > /var/www/html/index.html
通过访问可用的 Web 服务器,我们得到以下内容:
$ curl http://localhost/ Serving content from /var/www/html
给定的 html 文档已从 DocumentRoot
目录 /var/www/html
加载。
如果我们还想提供来自其他目录的内容,那么在 DocumentRoot
目录 /var/www/html
我们可以创建一个另外的 alias
。
这是新的 VirtualHost
配置文件,除了 /var/www/html
还将使用 URL 别名后缀 /opt/
提供来自 /opt/www/
的内容
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html Alias "/opt/" "/opt/www/" <Directory "/opt/www/"> Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <VirtualHost>
保存新配置并重新加载 apache 网络服务器:
# service apache2 reload [ ok ] Reloading web server: apache2.
接下来,在 /opt/www/
别名目录中创建一个简单的页面:
# echo "Serving content from /opt/www/" > /opt/www/index.html
使用别名 URL 后缀 /opt/
访问我们的 Web 服务器将提供来自 /opt/www
目录的内容:
$ curl http://localhost/opt/ Serving content from /opt/www/