故障排除
“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/
