问答一下,轻松解决,电脑应用解决专家!
主板显卡CPU内存显示器
硬盘维修显卡维修显示器维修
注册表系统命令DOS命令Win8
存储光存储鼠标键盘
内存维修打印机维修
WinXPWin7Win10/Win11
硬件综合机箱电源散热器手机数码
主板维修CPU维修键盘鼠标维修
Word教程Excel教程PowerPointWPS
网络工具系统工具图像工具
数据库javascriptLinux系统
PHP教程CSS教程XML教程

Apache2.4配置过程中遇到的问题“404 Not Found”、“403 Forbidden”解决办法

更新时间:2021-09-08 11:07 作者:二的平方点击:

环境:

  • Ubuntu 16.04

  • Apache 2.4

  • Apache目录:/usr/local/apache2

  • 跳转目录:/home/test/apidoc

预期效果:

  • 首页还是使用Apache自带的htdocs下的index.html

  • 但是需要从该首页,分别跳转到其他目录下的index.html

问题1:404 Not Found

修改/usr/local/apache2/htdocs下的index.html文件:

<html>
    <body>
        <div>
            <a href="/home/test/apidoc">Test</a>
        </div>
    </body>
</html>

启动Apache服务成功,访问首页,也可以访问,但是点击跳转的链接,就会提示:

Not Found
The requested URL /home/test/apidoc was not found on this server.

额,觉得好奇怪,目录的确存在,而且/home/test/apidoc下也存在index.html文件,为啥从首页访问这种跳转过去的就不行呢?

在度娘里搜寻了半天,终于明白了大概的意思,是需要修改conf配置文件,于是参考首页的配置增加了一段配置:

<Directory "/home/test/apidoc">
    Options Indexes
    AllowOverride None
    Require all granted
</Directory>

但是重启服务后,访问首页,点击跳转链接,问题依旧!

网上的解决方案,大部分都是说的要调整<Dicrectory>下的权限,最多是区分了2.2版本和2.4版本的不同,但是无论怎么尝试,问题都依旧,始终是返回404!

自己走了好多弯路,回头来看官方文档,虽然是英文版本,但是通过“用户指南-从URL映射到文件系统”章节,可以发现,其实归根结底,是我们在设置除DocumentRoot外的目录时,需要使用Alias标签,所以修改上面的配置为:

Alias "/apidoc" "/home/test/apidoc"
<Directory "/opt/disk2/var/www/mvm_tembin_api/apidoc">
    Options Indexes
    AllowOverride None
    Require all granted
</Directory>

然后修改/usr/local/apache2/htdocs/index.html为:

<html>
    <body>
        <div>
            <a href="/apidoc">Test</a>
        </div>
    </body>
</html>

重启Apache服务后,再次访问首页,点击跳转链接,成功,问题解决。

仔细想想,其实就是对于目录权限的控制问题,如果简单来理解这个问题,还有一个办法也可以解决问题,即不用修改配置文件,而是在htdocs目录下,增加链接文件,因为htdocs目录下的内容访问是没有问题,通过软链接来实现:

ln -s /home/test/apidoc ./apidoc

配置文件里去掉Alias一段,然后别的不动,重启服务,问题解决,效果一样!

只是本人其实也不知道这种解决办法,是否会引入其他问题或风险,如果有请大家指正。

问题2:403 Forbidden

遇到这个问题的根本原因还是在于权限控制有误,对根目录和首页所在目录的权限,保持默认,不要进行修改即可。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
你可能感兴趣的内容