`
Clayz
  • 浏览: 293836 次
  • 性别: Icon_minigender_1
  • 来自: 东京
社区版块
存档分类
最新评论

Apache配置.htaccess\.htpasswd

阅读更多

Apache配置.htaccess\.htpasswd 来自 Clay的日记 工作原理和使用方法
.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。

说明:如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。 例如,需要使用.config,则可以在服务器配置文件中按以下方法配置:

AccessFileName .config

允许放在这些文件中的指令取决于AllowOverride指令, 此指令按类别决定了.htaccess文件中哪些指令才是有效的。如果一个指令允许放在.htaccess文件中,则,在本手册的说明中,此指令会有一个覆盖段,其中说明了为使此指令生效而必须在AllowOverride指令中设置的值。

例如,本手册对AddDefaultCharset指令的说明表明了, 此指令可以用于.htaccess文件(见 Context一行),而Override一行是"FileInfo",那么为使.htaccess中的此指令有效,则至少要设置"AllowOverride FileInfo"。

例子:
Context: server config, virtual host, directory, .htaccess
Override: FileInfo

如果不能确定一个特定的指令是否允许用于.htaccess文件, 可以查阅手册中对指令的说明,看在Context(“上下文”)行中是否有".htaccess."。


使用.htaccess文件的场合
一般情况下,不应该使用.htaccess文件,除非你对主服务器配置文件没有存取权限。 有一种很常见的误解,认为用户认证只能通过.htaccess文件实现,但并不是这样, 把用户认证写在主服务器配置中是完全可行的,而且是一种很好的方法。

在内容提供者需要针对目录改变服务器的配置而对服务器系统没有root权限时,则应该使用.htaccess文件。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在一个机器上 宿主多个用户站点,而又希望用户可以自己改变配置的情况下。

虽然如此,一般都应该尽可能地避免使用.htaccess文件。 任何希望放在.htaccess文件中的配置,都可以放在主服务器的段中,而且更高效。

避免使用.htaccess文件有两个主要原因。

首先是性能。 如果AllowOverride允许使用.htaccess文件,则,Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到, 允许使用.htaccess文件都会导致性能的下降。另外,每次请求一个页面时,都需要读取.htaccess文件。

还有,Apache必须在所有更高级的目录中查找.htaccess文件, 使所有有效的指令都起作用(参见how directives are applied.),所以, 如果有对/www/htdocs/example中页面的请求,Apache必须查找以下文件:

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

而且,对此目录以外的每个文件访问,还有4个附加的文件系统访问,即使这些文件都不存在。 (注意,这可能仅仅发生在 / 允许使用.htaccess文件的情况下,虽然这种情况并不多。)

其次是安全。 如此,会允许用户修改服务器的配置,可能会导致未加限制的修改,请认真考虑是否给予用户这样的特权。但是,如果给予用户较少的特权而不能满足其需要,则会带来额外的技术支持请求,所以,必须明确地告诉用户已经给予他们的权限,说明AllowOverride设置的值, 并引导他们参阅相应的说明,以免日后许多麻烦。

注意,在/www/htdocs/example目录下.htaccess文件中放置指令,与, 在主服务器配置文件中段中放置相同指令, 是等效的。:

/www/htdocs/example中的.htaccess:

/www/htdocs/example中.htaccess文件的内容
AddType text/example .exm

httpd.conf文件中的段

AddType text/example .exm


但是,把这个配置放置在服务器配置文件中则更加高效,因为只需要在Apache启动时读取一次, 而不是在有文件请求时每次都读取。

将AllowOverride设置为"none"可以完全禁止使用.htaccess文件。

AllowOverride None

指令的生效
.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录,但是,很重要需要记住的是,其更高级的目录也可能会有.htaccess文件, 而指令是按查找顺序依次生效,所以,一个特定目录下的.htaccess文件中的指令可能会覆盖其更高级目录中的 .htaccess文件的指令,即,子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。

例如:

目录/www/htdocs/example1中的.htaccess文件有如下内容:

Options +ExecCGI

(注意: 必须设置"AllowOverride Options"以允许在.htaccess文件中使用 "Options"指令。)

在目录/www/htdocs/example1/example2中的.htaccess文件有如下内容:

Options Includes

由于第二个.htaccess文件的存在,/www/htdocs/example1/example2中 的CGI执行是不允许的,而只允许Options Includes,它完全覆盖了之前的设置。


认证举例
如果你为了知道如何认证,直接从这里开始看,有很重要的一点需要注意,有一种常见的误解,认为实现密码认证必须要使用.htaccess文件,其实不是这样。把认证指令放在主服务器配置文件的段中,是一个更好的方法,而.htaccess文件应该仅仅用于无权访问主服务器配置文件的时候。 参见上述的使用.htaccess文件的场合。

有此声明在先,如果你仍然需要使用.htaccess文件,请看以下说明。

必须设置"AllowOverride AuthConfig"以允许这些指令生效

.htaccess文件的内容:

AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins

注意,必须设置AllowOverride AuthConfig以允许这些指令生效

更详细的有关身份识别和认证的说明,请参见authentication tutorial。


服务器端包含举例
.htaccess文件的另一个常见用途是允许一个特定目录的服务器端包含(Server Side Includes), 可以在需要的目录中放置.htaccess文件,并如下配置:

Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml

注意,必须同时设置AllowOverride Options和 AllowOverride FileInfo使这些指令生效。

更详细的有关服务器端包含的说明,请参见SSI tutorial。


CGI举例
最后,可以通过.htaccess文件允许在特定目录中执行CGI程序,需按如下配置:

Options +ExecCGI
AddHandler cgi-script cgi pl

另外,如下,可以使给定目录下所有文件被视为CGI程序:

Options +ExecCGI
SetHandler cgi-script

注意,必须设置AllowOverride Options使这些指令生效。

更详细的有关CGI编程和配置的说明,请参见CGI tutorial。

疑难解答
如果在.htaccess文件中写入了配置指令但不起作用,可能有多种原因。

最常见的原因是,AllowOverride指令没有被正确设置, 必须确保没有对此文件区域设置AllowOverride None。有一个很好的测试方法,即, 在.htaccess文件随便增加点没用的内容,如果服务器没有返回了一个错误消息,那么几乎可以断定设置了AllowOverride None。

在访问文档时,如果收到服务器的出错消息,应该检查Apache的出错日志, 可以知道.htaccess文件中哪些指令是不允许使用的,也可能会发现需要纠正的语法错误。

分享到:
评论

相关推荐

    .htaccess

    个人档案 查看文章 .htaccess怎么用2007-05-16 14:04(文章来源)http://www.dnpark.com.cn/news/mm/www/1179329504375ZKlMSgYr.html<br><br>Apache服务器的.htaccess是一个非常强大的分布式配置文件,学会使用....

    .htaccess文件保护实例讲解

    比如说,想要保护admin文件夹,经过以下两个步骤: 步骤一、可以用记事本新建文件.htaccess,输入以下内容: AuthType BasicAuth UserFile D:/AppServ/www/Hill/admin/.htpasswd AuthName “hill” require valid-...

    HT Utils:帮助您在Windows中创建和管理.htaccess和.htpasswd文件。-开源

    一个基于VB.NET的程序,可帮助您创建和编辑与Apache Web服务器一起使用的.htaccess和.htpasswd。 -2013更新:哇,我看到我的旧学校项目对某些人来说仍然占有一席之地。 随意使用该程序并根据需要对其进行修改! 该...

    ApacheConf.tmLanguage:改编自GreyWyvern的文本伴侣包

    .htaccess .htgroups .htpasswd 安装 使用程序包控制,安装“ ApacheConf” 或者: 打开Sublime Text Packages文件夹 OS X:〜/ Library / Application Support / Sublime Text 3 / Packages / Windows:%APP...

    scouncil-v2:嘘,这是最高机密

    Apache2 配置识别.htaccess文件,将这些行添加到您的apache2.conf (通常在/etc/apache2 ): < Directory> # assuming that your Apache DocumentRoot is /var/wwwOptions Indexes FollowSymLinksAllowOverride All...

    Codiad-Auth-Basic:用于创建和更新 .htaccess 文件的 Codiad 插件

    要以这种方式使用插件,您必须创建一个类似于以下内容的.htaccess文件: AuthType Basic AuthName "Admin" AuthUserFile /path/to/codiad/.htpasswd require valid-user 在你的config.php你必须把类似的东西 // ...

    HTAdmin:HTAdmin 的古老代码,一个用于管理 Apache .htpasswd 文件的简单 PHP 工具

    HTAdmin 是用于管理 Apache .htpasswd 文件的基本且简单的 PHP 工具。 开发从 2000 年(PHP 4 首次发布时)开始,并在 2005 年(PHP 5 之前)停止。要求Linux/Unix/BSD、Windows 或 Mac OS X 阿帕奇网络服务器PHP...

    Apache Wind2003 配置网站目录权限小结

    Apache在其安装目录的bin子目录中提供了htpasswd工具,用于建立密码文件: 代码如下:htpasswd -b -c -m -d -s c:\password.txt username password其中-m -d -s都是加密的方式,具体见参考手册 2.启用认证 其中方式有...

    Apache HTTP Server Version 2.2 文档(2013.4.10最新)

    htpasswd - 管理用于基本认证的用户文件 httpd - Apache超文本传输协议服务器 httxt2dbm - 生成RewriteMap指令使用的dbm文件 服务器和支持程序 logresolve - 解析Apache日志中的IP地址为主机名 其他程序 rotatelogs...

    heroku-php-htpasswd:在 heroku PHP 环境中使用 htaccess 进行基本身份验证

    #PHP 在 Heroku 上 这是在 heroku 上使用 htaccess 操作基本身份验证的基本设置。 ##设置环境PHP:5.6系列文档根目录:htdocs /附加选项:mb-string基本认证编号:测试通过:测试

    DirectoryPass-开源

    一种用于Apache Web服务器软件的多平台.htaccess文件管理系统,该系统使用户能够管理.htaccess和.htpasswd文件,以设置受密码保护的目录以及添加和删除用户。

    mailmanager:简单的基于Web的实用程序,用于管理邮件服务器队列和db文件

    邮件服务器管理实用程序 安装: 安装在具有mod_auth_cas的... 在cgi-bin中设置一个.htaccess / .htpasswd文件,以保护对脚本的访问或通过Apache config中的指令进行保护 用法: 浏览到/cgi-bin-path/quarantine.cgi

    Htaccess Authentication Manager-开源

    一组简单的 php 脚本,用于管理 .htpasswd 文件以使用 apache 进行目录身份验证。

    docker-precise-rhopypi

    因此,您必须创建一个.htaccess文件。 这可以通过使用apache2-utils包来完成。 安装S3铲斗 为了使映像正确安装S3存储桶,底层内核必须支持文件系统。 另外,必须将以下环境变量传递给映像: S3_BUCKET_NAME:您的...

    ansible-role-htpasswd:Ansible角色-htpasswd

    ansible-role-htpasswd:Ansible角色-htpasswd

    Deadlock User Management System-开源

    死锁是一个功能强大且功能齐全的用户管理系统,主要用于使用Apache的htaccess和htpasswd保护Web目录和文档。 死锁是用PHP编写的,并使用MySQL后端。

Global site tag (gtag.js) - Google Analytics