.htaccess文件和访问限制

admin  2016-07-10 20:30   Hits: 

.htaccess文件分布式配置文件提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录,任何出现在配置文件中的指令都可能出现在.htaccess文件中,该文件在httpd.conf文件的AccessFileName指令中指定,用于进行针对单一目录的配置,在服务器配置文件中按以下方法配置
AccessFileName  .htaccess 
一般情况下,不应该使用.htaccess文件除非你对主配置文件没有访问权限,有一种很常见的误解,认为用户认证只能通过.htaccess文件实现,其实并不是这样,把用户认证写在主配置文件中是完全可行的,而且是一种很好的方法。
.htaccess文件应该被用在内容提供需要针对特定目录改变服务器的配置而又没有root权限的情况下,如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在同一个机器上运行了多个用户站点,而又希望用户可以自己改变配置的情况下。
虽然如此,一般都应该尽可能的避免使用.htaccess文件,任何希望放在.htaccess文件中的配置,可以放在主配置文件的<Directory>段中,而且更高效,避免使用.htaccess文件的主要原因是首先是性能,如果AllowOverride启用了.htaccess文件则Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到,启用.htaccess都会导致性能的下降,另外,对每一个请求,都需要读取一次.htaccess文件,Apache必须在所有上级的目录中查找.htaccess文件,以使所有有效的指令都起作用,其次是安全。这样会允许用户自己修改服务器的配置,这可能会导致某些意想不到的修改,所以请认真考虑是否应当给予用户这样的特权,将AllowOverride设置为none可以完全禁止使用.htaccess文件:
AllowOverride None   #完全禁止使用.htaccess文件
 
1、设置路径别名
在使用.htaccess文件之前,我们使用 Alias指令设置一个路径名,将/var/www/html目录的别名设置为dir,这样我们可以在浏览器里通过别名dir去访问/var/www/html目录下面的网页文件,并且可以使用<Directory>容器指令对/var/www/html目录做访问控制,之后在把同样的访问控制改为使用.htaccess文件方式完成,设置路径别名和目录权限控制,可以在主配置文件http.conf中加入以下指令。具体设置如下:
Alias /dir/ "var/www/html" #使用Alias设置别名
<Directory "/var/www/html"> #使用<Directory>容器指令设置 /var/www/html目录访问权限控制
Options Indexes FollowSymLinks #当访问时可以允许出现目录列表和符号链接
AllowOverride None #禁止.htaccess文件
Order allow,deny  #顺序是先允许后被拒绝
allow from all #结束一个目录的设置
</Directory>
 
1.1、Option指令
Option指令控制了在特定目录中将使用哪些服务器特性,Option可以为None,All或者任何Indexes Includes FollowSymlinks等
1.2、AllowOverride
确定允许存在于.htaccess文件中的指令类型,当服务器发现一个.htaccess文件时,它需要知道在这个文件中声明的哪些指令能覆盖在此之前指定的配置指令。AllowOverride仅在不包含正则表达式的<Directory>配置段中才是有效的。在<Location><DirectoryMatch><Files>配置段中都是无效的。如果此指令被设置为None,那么.htaccess文件将被完全忽略,事实上,服务器根本不会读取.htaccess文件。当此指令设置为All时,所有具有.htaccess作用域的指令都允许出现在.htaccess文件中。
1.3、Order 
控制默认的访问状态与Allow和Deny指令生效的顺序,表明用户是先设置允许的访问地址还是先设置禁止访问的地址
1.4、Allow
指令控制哪些主机可以访问服务器的该区域,可以根据主机名,IP地址,IP地址范围或其他环境变量中捕获的客户端请求特性进行控制。如指令"Allow from all",则允许所有主机访问。
1.5、Deny
这条指令允许基于主机名,ip地址或者环境变量限制对服务器的访问。Deny指令的参数设置和Allow指令完全相同。
 
2、在.htaccess文件中设置目录的访问限制
 
启用并控制使用.htaccess文件,可以在 Apache的主配置文件中将AccessFileName指令的参数设置为.htaccess,按如下内容修改即可启用.htaccess文件功能。
AccessFileName .htaccess
 
任何出现在配置文件中的指令都可能出现在.htaccess文件中,通常.htaccess文件使用的配置语法和主配置文件一样,AllowOverride指令按类别决定了.htaccess文件中哪些指令才是有效的
 
上一篇:Apache服务器中使用配置段(容器)
下一篇:设置基于域名的虚拟主机