博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
apache .htaccess 的应用
阅读量:2436 次
发布时间:2019-05-10

本文共 4360 字,大约阅读时间需要 14 分钟。

一.基本的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
<Files ~ "^/.htaccess">
  Order allow,deny
  Deny from all
</Files>
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目录的访问不生成文件列表

 

转载地址:http://ddmmb.baihongyu.com/

你可能感兴趣的文章
java——职责链模式
查看>>
java_选择类排序——简单选择排序
查看>>
java_中介者模式
查看>>
java_备忘录模式
查看>>
多线程——背景了解
查看>>
power designer使Comment与Name相同.txt
查看>>
学习Spring 开发指南------基础语义
查看>>
IE下的图片空隙间距BUG和解决办法
查看>>
[pb]从excel导入数据到datawindow
查看>>
CSS Padding in Outlook 2007 and 2010
查看>>
有关内存的思考题
查看>>
What is the difference between gross sales and revenue?
查看>>
Dreamweaver默认打开后缀名为ftl的文件时
查看>>
LNMP一键安装
查看>>
几个分析函数的比较
查看>>
主流算法:
查看>>
RMI
查看>>
J.U.C之Future
查看>>
缓存思想分析
查看>>
一致性hash
查看>>