一、最新总结
1、权限说明
require all granted # 允许所有用户访问我的网站
Require all denied # 拒绝所有人访问我的网站
AllowOverride All # 开启.htaccess文件
Options Indexes # 允许浏览目录结构
Options -Indexes # 不允许浏览目录结构
options FollowSymLinks # 允许将站点目录下的文件创建软链接到其他目录中使用
options FollowSymLinks # 服务器允许此站点目录使用链接符号
2、允许任何人访问html目录,并允许浏览目录结构和文件
<VirtualHost *:80>
ServerName www.efg.com
DocumentRoot /var/www/html # 指定网站根目录
<Directory "/var/www/html"> # 为网站根目录下的目录分配权限,也可以为网站更目录下的文件分配权限<Files></Files>
require all granted # 允许任何人访问html目录
AllowOverride All # 开启.htaccess文件
Options Indexes FollowSymLinks # 允许浏览html目录结构,也可以写成 +Indexes +FollowSymLinks
</Directory>
</VirtualHost>
验证:
http://www.efg.com/index.html # 允许访问该文件
http://www.efg.com/a # 允许浏览该目录
http://www.efg.com/a/1/g.jpg # 允许访问该文件
3、允许任何人访问html目录,但不允许浏览目录结构
<VirtualHost *:80>
ServerName www.efg.com
DocumentRoot /var/www/html
<Directory "/var/www/html">
require all granted
AllowOverride All
Options -Indexes -FollowSymLinks # 不允许浏览目录结构
</Directory>
</VirtualHost>
验证:
http://www.efg.com/index.html # 允许访问该文件
http://www.efg.com/a # 不允许浏览该目录
http://www.efg.com/a/1/g.jpg # 允许访问该文件
4、禁止访问指定目录
- 通过 标签来控制
<VirtualHost *:80>
ServerName www.efg.com
DocumentRoot /var/www/html
<Directory "/var/www/html">
AllowOverride All
Options Indexes FollowSymLinks
require all granted
</Directory>
# /var/www/html网站根目录下有好几个目录的情况下
<DirectoryMatch "/var/www/html/b"> # 禁止访问/var/www/html/b/目录
Order allow,deny # 规则顺序:先设置允许规则,后设置拒绝规则
# 允许规则: 空
Deny from all # 拒绝规则: 所有
</DirectoryMatch>
</VirtualHost>
5、禁止访问指定文件,比如.svn .git
- 通过 标签来控制
<VirtualHost *:80>
ServerName www.efg.com
DocumentRoot /var/www/html
<Directory "/var/www/html">
AllowOverride All
Options Indexes FollowSymLinks
require all granted
</Directory>
# 禁止访问/var/www/html/目录下所有以.svn .git结尾的文件
<Files ~ "\.(svn|git)">
Order allow,deny
Deny from all
</Files>
</VirtualHost>
二、之前的总结(可能会有用)
1、apache2.4的一些拒绝规则
(1) 拒绝或者允许浏览目录结构
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
Require all denied
Allow from all
Order allow,deny
</Directory>
解释:
AllowOverride None 设置为None的时候.htaccess会被忽略
Options Indexes : 允许浏览目录 (虚拟主机优先生效)
Options -Indexes : 不允许浏览目录 (虚拟主机优先生效)
Options FollowSymLinks: 服务器将跟踪符号连接,就是快捷方式的实际指向(虚拟主机优先生效)
Options -Indexes FollowSymLinks: 可以连起来写
Require all denied: 拒绝所有访问(全局生效)
Require all granted 允许所有访问(全局生效)
Allow from all 允许以上请求
Order allow,deny 未被明确允许的都拒绝
(2) 禁止访问目录或文件
# 禁止访问目录:/alidata/www/
<VirtualHost *:80>
<DirectoryMatch "/alidata/www/">
Order allow,deny
Deny from all
</DirectoryMatch>
</VirtualHost>
# 禁止访问/alidata/www/下的 /date/ 目录,/alidata/www/下的其它目录都可以访问
<DirectoryMatch "/alidata/www/(date)">
Order allow,deny
Deny from all
</DirectoryMatch>
<VirtualHost *:80>
......
</VirtualHost>
# 禁止访问以.php .txt结尾的文件
<VirtualHost *:80>
..........
..........
<Files ~ "\.(txt|php)$">
Order allow,deny
Allow from all
</Files>
..........
..........
</VirtualHost>
# 禁止访问/alidata/www/下的/date/和/html/目录中的以.php .txt结尾的文件
<DirectoryMatch "/alidata/www/(date|html)">
<Files ~ "\.(php|txt)$">
Order allow,deny
Deny from all
</Files>
</DirectoryMatch>
<VirtualHost *:80>
......
</VirtualHost>
2、栗子
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
DocumentRoot xxxxxx
ServerName xxx.xxx.xx
ServerAlias xxx.xxx.xx
<Directory "/alidata/www/api.mobile.playyx.com">
......
......
</Directory>
<Files ~ "\.(txt|cvs|svn|git|hg|bzr)$"> 禁止访问这些文件
Order allow,deny
Deny from all
</Files>
<DirectoryMatch "/alidata/www/api.mobile.playyx.com/.svn/"> 禁止访问【.svn】这个目录
Order allow,deny
Deny from all
</DirectoryMatch>
</VirtualHost>