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

对Apache其实并不是非常了解,纯小白,只是环境里需要搭建一个简单的站点,就使用了该服务,但是在配置过程中出现了403、404错误,经过好久才搞定,特记录一下,以示提醒。

环境:

  • 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">Testa>
        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>

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

网上的解决方案,大部分都是说的要调整下的权限,最多是区分了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">Testa>
        div>
    body>
html>

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

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

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

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

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

问题2:403 Forbidden

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

你可能感兴趣的:(Linux,Ubuntu,Apache)