环境:
预期效果:
问题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
遇到这个问题的根本原因还是在于权限控制有误,对根目录和首页所在目录的权限,保持默认,不要进行修改即可。
|