Apache2.4虚拟目录访问权限问题解决

参考资料:http://blog.sina.com.cn/s/blog_ed3bdabf0102x0vx.html

apache 2.4的虚拟目录配置与apache2.2的虚拟目录配置有所不同,常出现的问题如下:

Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration

这个问题的原因可能是LoadModule authz_host_module modules/mod_authz_host.so这个模块没有打开,将其前面的#去掉即可,但大多情况下这个模块是解开的,那么第二个原因就是版本问题,在Apache2.4版本中,提供了由mod_authz_host支持的新的配置语法。而2.2版本中的Order、Allow等命令在新版本中也可以得到兼容,实现这个兼容功能的模块就是mod_access_compat。所以Load这个模块后,apache2.4就能识别这些语句了。

但是新的问题随之而来,加载过mod_access_compat之后,apache是可以启动了,却发现无法访问虚拟目录下的文件,提示是没有权限,所以这就涉及到访问权限设置的问题了

关于2.4和2.2访问权限的设置区别如下:

所有的请求都被拒绝

2.2上的配置

Order deny,allow

Deny from all

2.4上的配置

Require all denied

所有请求都是允许的

2.2上的配置

Order allow,deny

Allow from all

2.4上的配置

Require all granted

在域中的所有主机都可以访问example,所有其他外网主机的访问被拒绝

2.2上的配置

Order Deny,Allow

Deny from all

Allow from example.org

2.4上的配置

Require host example.org

要想外网访问将 Require local 改为 Require all granted 。

经常会用到的: Require all denied Require all granted Require host xxx.comRequire ip 192.168.1 192.168.2 Require local

举例说明

仅允许IP:192.168.0.1 访问

Require ip 192.168.0.1

仅禁止IP:192.168.0.1访问

Require all granted

deny from 192.168.1.0

ps:有些人说使用的是Require all granted Require not ip 192.168.0.1的指令,起初我也信以为真,但是亲自试验发现不行,用deny from 是可以的,读者们也可以自己试试

允许所有访问

Require all granted

拒绝所有访问

Require all denied

默认是 Require local 仅允许本地访问。

你可能感兴趣的:(Apache2.4虚拟目录访问权限问题解决)