==================说在前面的话=================
1:这次实验使用的php项目是Discuz,Discuz的安装请参照:http://www.cnblogs.com/yichong/p/6038196.html
===================现在开干===================
在本次实验中我们使用如下标签:
<Directory “目录”> ... </Directory>
<Filesmatch “文件”> ... </Filesmatch>
<Location “URL”> ... </Location>
第一:<Directory “目录”></Directory>标签讲解
说明:针对目录做权限限制
1:标签结构
以 <Directory “目录”> 开头,中间填充选项参数,以 </Directory> 结尾
2:标签位置
在 <VirtualHost *:> 和 </VirtualHost> 标签中间
3:标签指令参数详解
①:Options指令,Options指令后可以附加指定多种服务器特性,特性选项之间以空格分隔,特性表如下:
All | 表示除MultiViews 之外的所有特性。这也是Options指令的默认设置。 |
None | 表示不启用任何的服务器特性。 |
FollowSymLinks | 服务器允许在此目录中使用符号连接。如果该配置选项位于<Location> 配置段中,将会被忽略。 |
Indexes |
如果输入的网址对应服务器上的一个文件目录,而此目录中又没有 (例如: 模块生成的一个格式化后的目录列表。 |
MultiViews |
允许使用 路径可能对应多种类型的文件,那么服务器将根据客户端请求的具体情况自动选择一个最匹 配客户端要求的文件。例如,在服务器站点的
没有 据用户请求的具体情况返回最匹配要求的 |
SymLinksIfOwnerMatch |
SymLinksIfOwnerMatch服务器仅在符号连接与目标文件或目录的所有者具有相同的用户 ID时才使用它。简而言之,只有当符号连接和符号连接指向的目标文件或目录的所有者是同 一用户时,才会使用符号连接。如果该配置选项位于 |
ExecCGI | 允许使用mod_cgi 模块执行CGI脚本。 |
Includes | 允许使用mod_include 模块提供的服务器端包含功能。 |
IncludesNOEXEC |
允许服务器端包含,但禁用"#exec cmd"和"#exec cgi"。但仍可以从 使用"#include virtual"虚拟CGI脚本。 |
②:AllowOverride指令,该指令用于指定是否使用.htaccess文件,参数有如下表:
All | 开启.htaccess文件 |
None | 关闭.htaccess文件 |
③:Require指令,该指令用于指定允许、拒绝列表,在Apache2.2用的是下面这种
Order Deny,Allow
Deny All
Allow Form 10.3.33.3
而在Apache2.4用的是 Require all granted 和 Require all denied这种方式,具体如下表:
Require all granted | 允许所有的访问 |
Require all denied | 拒绝所有访问 |
Require ip 10.2.2.32 | 允许10.2.2.32这个地址访问 |
Require not ip 10.3.3.21 | 拒绝10.3.3.21这个地址访问 |
Reuquire host baidu.com | 允许名为baidu.com的域访问 |
Reuquire not host baidu.com | 拒绝名为baidu.com的域访问 |
如果是一条规则,可以直接使用,但是如果有多条规则,则必须把这些规则包含在如下元素当中:
<RequireAll> </RequireAll> | 在此元素中包含的规则,拒绝优先执行 |
<RequireAny> </RequireAny> | 在此元素中包含的规则,允许优先执行 |
举例1:允许所有访问,只拒绝192.168.1.103访问
<RequireAll>
Require all granted
Require not ip 192.168.1.103
</RequireAll>
举例2:拒绝所有访问,只允许192.168.1.103访问
<RequireAny>
Require all denied
Require ip 192.168.1.103
</RequireAny>
第二:<FilesMatch “文件”> </FilesMatch>
说明:针对文件做权限限制,和Apache2.2版本的 <Files "文件"> </Files> 作用一样,只不过新的这个支持正则表达式。
1:标签结构
以 <FilesMatch “文件”> 开头,中间填充选项参数,以 </FilesMatch> 结尾
2:标签位置
在 <VirtualHost *:80> 和 </VirtualHost> 标签中间
3:标签指令参数详解:
①:Require指令,该指令用于指定允许、拒绝列表,在Apache2.2用的是下面这种
Order Deny,Allow
Deny All
Allow Form 10.3.33.3
而在Apache2.4用的是 Require all granted 和 Require all denied这种方式,具体如下表:
Require all granted | 允许所有的访问 |
Require all denied | 拒绝所有访问 |
Require ip 10.2.2.32 | 允许10.2.2.32这个地址访问 |
Require not ip 10.3.3.21 | 拒绝10.3.3.21这个地址访问 |
Reuquire host baidu.com | 允许名为baidu.com的域访问 |
Reuquire not host baidu.com | 拒绝名为baidu.com的域访问 |
如果是一条规则,可以直接使用,但是如果有多条规则,则必须把这些规则包含在如下元素当中:
<RequireAll> </RequireAll> | 在此元素中包含的规则,拒绝优先执行 |
<RequireAny> </RequireAny> | 在此元素中包含的规则,允许优先执行 |
举例1:允许所有访问,只拒绝192.168.1.103访问
<RequireAll>
Require all granted
Require not ip 192.168.1.103
</RequireAll>
举例2:拒绝所有访问,只允许192.168.1.103访问
<RequireAny>
Require all denied
Require ip 192.168.1.103
</RequireAny>
第三:<LocationMatch "URL"> </LocationMatch>
说明:针对URL做权限限制,和Apache2.2版本的 <Location "URL"> </Location> 作用一样,只不过新的这个支持正则表达式。
1:标签结构
以 <LocationMatch “文件”> 开头,中间填充选项参数,以 </LocationMatch> 结尾
2:标签位置
在 <VirtualHost *:80> 和 </VirtualHost> 标签中间
3:标签指令参数详解:
①:Require指令,该指令用于指定允许、拒绝列表,在Apache2.2用的是下面这种
Order Deny,Allow
Deny All
Allow Form 10.3.33.3
而在Apache2.4用的是 Require all granted 和 Require all denied这种方式,具体如下表:
Require all granted | 允许所有的访问 |
Require all denied | 拒绝所有访问 |
Require ip 10.2.2.32 | 允许10.2.2.32这个地址访问 |
Require not ip 10.3.3.21 | 拒绝10.3.3.21这个地址访问 |
Reuquire host baidu.com | 允许名为baidu.com的域访问 |
Reuquire not host baidu.com | 拒绝名为baidu.com的域访问 |
如果是一条规则,可以直接使用,但是如果有多条规则,则必须把这些规则包含在如下元素当中:
<RequireAll> </RequireAll> | 在此元素中包含的规则,拒绝优先执行 |
<RequireAny> </RequireAny> | 在此元素中包含的规则,允许优先执行 |
举例1:允许所有访问,只拒绝192.168.1.103访问
<RequireAll>
Require all granted
Require not ip 192.168.1.103
</RequireAll>
举例2:拒绝所有访问,只允许192.168.1.103访问
<RequireAny>
Require all denied
Require ip 192.168.1.103
</RequireAny>