故障排除

“404 Not Found”通常意味着我们正在尝试访问不存在的内容或者我们提供了不正确的 URL。
注意 URL 中的尾随 /,因为 http://localhost/opthttp://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 在 DocumentRoot 目录以外的目录外提供内容

此配置将显示一个基本示例,说明如何使用 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/
日期:2020-07-07 20:54:50 来源:oir作者:oir