首页 > 网站 > Apache > 正文

浅析Apache2.4.x与Apache2.2.x的不同点

2024-08-27 18:22:35
字体:
来源:转载
供稿:网友

以前一直在用Apache2.2,最近升级了apache版本,改用Apache2.4时感觉一些基本配置都是差不多,但是配置虚拟主机时发现有些不同,现在再对比一下整理出来.

一直以来我都是在htdocs目录下配置虚拟主机的,大体上使用的方法如下:

  1. <VirtualHost *:80> 
  2.     DocumentRoot  "D:/www/Apache24/htdocs" 
  3.     ServerName localhost 
  4.     <Directory D:/www/Apache24/htdocs> 
  5.         DirectoryIndex index.html index.php 
  6.     Order Deny,Allow 
  7.     Allow from all 
  8. </Directory> 

但是最近我想在目录htdocs之外配置虚拟主机,还是按照上面的老套路来配置,结果出现的403错误:

<span style="font-size: 16px;"><strong>Forbidden</strong></span>

You don't have permission to access / on this server.

瞬间没了头绪,这是在Apache2.2所没有的出现过的情况啊,然后试着将虚拟主机的根目录改成htdocs目录之下,也就是:

DocumentRoot "D:/www/Apache24/htdocs/test"

发现网站又能正常运行了,反复试了多次都是同一的结果,然后我就想到底是哪个地方出现了问题,这个问题困扰了我几天,百度找了无数答案,大部分都是说目录的权限有错误,需要修改权限,或者是selinux设置的问题,可是我运行的环境是windows,所以这些情况也被排除在外;有些说是需要设置Allow from all,也没有效果.

通过查看错误日志,发现有那么一行:

AH01630: client denied by server configuration: D:/www/

但是我的Order指令设置都是正确的,这样我郁闷了一段时间,无意中发现了一篇文章描述Apache2.4与Apache2.2之间的一些指令的差异,刚好解决了我的问题,其中的一些指令已经无效,如:

  1. Order Deny,Allow 
  2. Deny from all 
  3. Allow from al 
  4. //取而代之的是: 
  5. Deny from all 
  6. //变成 
  7. Require all denied 
  8. Allow from all 
  9. //变成 
  10. Require all granted 

 于是我将虚拟机配置为:

  1. <VirtualHost *:80> 
  2.     DocumentRoot "D:/www/Vevb/api" 
  3.     ServerName www.Vevb.com
  4.     <Directory "D:/www/Vevb/api"
  5.     DirectoryIndex index.html index.php 
  6.     Require all granted 
  7.     </Directory> 
  8. </VirtualHost> 

发现还是提示403错误,只不过这次的错误日志的错误变成:

AH01276:Cannot serve directory D:/www/Vevb/api/: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive

这是因为里面的根目录里面没有index.html 或者 index.php,我们可以添加index.html文件或者将设置改成如下:

  1. <VirtualHost *:80> 
  2.     DocumentRoot "D:/www/Vevb/api" 
  3.     ServerName www.Vevb.com 
  4.     <Directory "D:/www/Vevb/api"
  5.     Options FollowSymLinks Indexes 
  6.     Require all granted 
  7.     </Directory> 
  8. </VirtualHost> 

大功告成了,不过我敢肯定Apache2.4与Apache2.2的区别不止于此,只是我还没有发现而已,期待进一步的发现.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表