apache .htaccess 的应用

一.基本的Apache用户认证方法: 

若对某一目录下的文件如/home/ftp/pub需要做到用户认证,则在httpd.conf 
中加入下面的行 
<> 
options indexes followsymlinks 
allowoverride authconfig 
order allow,deny 
allow from all 

<> 
用在目录/home/ftp/pub下放文件.htaccess,内容如下: 
authname "shared files" 
authtype basic 
authuserfile /etc/.passwd 
require valid-user 

用随Apache来的程序htpasswd 生成文件/etc/.passwd,每行一个用户名:密码 

首先用htpasswd创建一个密码文件:比如文件名叫做my.passwd
/home/apache/bin/htpasswd -c -b my.passwd myusername mypassword
如果增加帐号:
/home/apache/bin/htpasswd -b my.passwd anotherusername anotherpassword

将my.passwd上传到一个非发布路径下。
比如你的物理WEB根目录的上一级
/home/apache/conf/my.passwd

创建 .htaccess
AuthName "My Authorization Directory"
AuthType Basic
AuthUserFile /home/apache/conf/my.passwd
Require valid-user

将这个文件上传到你需要进行用户认证的目录:
/home/apache/htdocs/admin/.htaccess

这样这个目录的访问就需要认证了。

只要能提供正确的用户名和密码对,就允许登录访问,这是针对任何地址来的 
请求都要求提供用户名和密码认证。 

二.针对部分网段或地址要求认证。 

若公司LAN所在网段为192.168.0.0/24,且有一防火墙专线接入Internet, 
内部网卡的地址为192.168.0.1/32,则现在希望所有通过拨本地163通过 
防火墙上的apache反向代理向LAN上的另一WWW服务器访问时需要认证,而本地 
LAN上的用户不需认证。可以在httpd.conf中放入: 
〈Directory /home/ftp/pub> 
Options Indexes FollowSymLinks 
AllowOverride AuthConfig 
order deny,allow 
deny from 192.168.0.1 
〈/Directory> 

且在/home/ftp/pub/.htaccess中放入: 
AuthName "shared files" 
AuthType Basic 
AuthUserFile /etc/.passwd 
require valid-user 
satisfy any 

三.对同一目录及其下的子目录有不同的权限,仅某些人可以存取一目录下的 
子目录。 
如有一目录/home/ftp/pub/sales,有三个用户user1,user2,user3都需要用户名 
和密码进入/home/ftp/pub,但仅user1,user2能进入/home/ftp/pub/sales.则 
放下面的行到httpd.conf 

〈Directory /home/ftp/pub> 
Options Indexes 
AllowOverride AuthConfig 
order allow,deny 
allow from all 
〈/Directory> 

〈Directory /home/ftp/pub/sales> 
Options Indexes 
AllowOverride AuthConfig 
order allow,deny 
allow from all 
〈/Directory> 

且看/home/ftp/pub/.htaccess为: 
AuthName "shared files" 
AuthType Basic 
AuthUserFile /etc/.passwd 
require valid-user 

且看/home/ftp/pub/sales/.htaccess 
AuthName "shared files" 
AuthType Basic 
AuthUserFile /etc/.passwd 
AuthGroupFile /etc/.salesgroup 
require group manager 

且文件/etc/.passwd内容为: 
user1:passwd1 
user2:passwd2 
user3:passwd3 

且文件/etc/.salesgroup内容为: 
manager: user1 user2  
 

在Apache中使用.htaccess配置文件"

在配置Apache时,除了可以在主配置文件(http.conf)中配置访问控制之外,还可以使用.htaccess 文件配置对指定目录的访问控制。使用.htaccess文件可以改变主配置文件中的配置,但是它只能设置对指定目录的访问控制,这个目录就是. htaccess文件存放的目录。在一个目录下设置了.htaccess文件之后,当用户使用浏览器访问此目录时,Apache会读取该文件的配置来覆盖主配置文件(http.conf)的配置。

注意:
  1.修改.htaccess文件无需重新启动Apache服务器,而是立即生效。
  2.在可能的情况下应该尽量避免使用.htaccess文件,因为使用 .htaccess文件会降低服务器的运行性能。


何时使用.htaccess文件
   有如下两种情况需要使用.htaccess文件
    *在多个用户之间分割配置
    *想在不重新启动服务器的情况下改变服务器配置
  使用.htaccess文件必须经过两个配置步骤
    *首先在主配置文件中的启用并控制对.htaccess文件的使用
    *然后在需要覆盖主配置文件的目录下生成.htaccess文件
  在主配置文件中的启用并控制对.htaccess文件的使用
  1.设置文件名称
  必须保证在主配置文件中包含如下的配置语句:

AccessFileName .htaccess


  Order allow,deny
  Deny from all


2.控制在.htaccess文件中可以使用的指令组
  要控制在.htaccess文件中可以使用的指令组,需要在主配置文件中使用AllowOverride指令。下面列出了可以在AllowOverride指令所使用的指令组。

指令组 可用指令 说明
============================
AuthConfig

AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require

进行认证、授权以及安全的相关指令
=============================
FileInfo

DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter

控制文件处理方式的相关指令
=============================
Indexes

AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName

控制目录列表方式的相关指令
==============================
Limit

Allow,Deny,Order

进行目录访问控制的相关指令
==============================
Options

Options, XBitHack

启用不能在主配置文件中使用的各种选项
=============================
All

全部指令组

可以使用以上所有指令
=============================
None
禁止使用所有指令
禁止处理.htaccess文件
==============================


生成.htaccess文件
  当在主配置文件中配置了对.htaccess文件的启用和控制之后,接下来就可以在需要覆盖主配置文件的目录下生成.htaccess文件。.htaccess文件中可以使用的配置指令取决于主配置文件中AllowOverride指令的设置。
  使用.htaccess文件举例
  下面举一个简单的例子说明.htaccess文件的使用。


//首先在文档根目录下生成一个private目录,并创建测试文件
# cd /var/www/html
# mkdir private
# cd private
# touch test
//修改配置前,在客户浏览器查看结果,如图1所示
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//添加如下配置语句
<Directory "/var/www/html/private">
  AllowOverride Options
</Directory>
#
//重新启动httpd
# service httpd restart
//在/var/www/html/private目录下生成.htaccess文件
# vi /var/www/html/private/.htaccess
//添加如下配置语句
Options –Indexes
#
//在客户浏览器中查看结果,如图2所示
//通过查看配置结果,可以证明.htaccess已经生效。
//即对private目录的访问不生成文件列表

 

上一篇:《jQuery Mobile入门经典》—— 2.5 问与答


下一篇:《Photoshop修色圣典——PPW专业照片修正流程与技巧》—第1章关于历史