`
Clayz
  • 浏览: 297683 次
  • 性别: 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文件中哪些指令是不允许使用的,也可能会发现需要纠正的语法错误。

分享到:
评论

相关推荐

    apache下.htaccess的功能及写法

    `.htaccess`是Apache服务器配置中的一个非常重要的文件,它允许你在网站的各个目录层级上进行自定义配置,实现对网站行为的个性化控制。这篇文章主要讲述了`.htaccess`的一些核心功能和常见用法。 首先,`.htaccess...

    apache开启.htaccess及.htaccess的使用方法

    Apache服务器上的`.htaccess`文件是一种非常强大的工具,它允许你在网站的各个目录层级上进行配置更改,而无需直接编辑服务器的主配置文件`httpd.conf`。这篇内容主要介绍了如何开启Apache对`.htaccess`的支持以及...

    让Apache 2支持.htaccess并实现目录加密的方法

    需要编辑主配置文件`apache2.conf`,打开权限允许`.htaccess`覆盖。找到文件`/etc/apache2/apache2.conf`,然后添加以下内容到适当的配置区块(例如`<VirtualHost>`或`<Directory>`): ``` 你需要开启加密的...

    linux-Apache 配置.doc

    ### Linux 下 Apache 服务器配置详解 #### 一、Apache 的安装与基本配置 **1. 安装 Apache** Apache 的安装通常分为几个步骤,首先是获取源码包,然后进行编译安装。 - **获取源码包**:首先访问 Apache 官方...

    Apache中.htaccess文件功能

    Apache中的`.htaccess`文件是一种分布式配置文件,用于在Web服务器上实现对特定目录及其子目录的配置控制。它的功能非常强大,允许非系统管理员级别的用户进行一些基本的配置调整,比如错误处理、访问控制、URL...

    .htaccess

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

    保护Linux下的Apache网站.pdf

    `.htaccess`文件是Apache服务器上的一种配置文件,它是一个文本文件,允许用户在没有root权限的情况下更改特定目录的配置。通过在文档目录中放置包含一个或多个指令的`.htaccess`文件,可以影响该目录及其所有子目录...

    .htaccess重定向和url重写的几个例子.docx

    `.htaccess` 文件是 Apache 服务器配置中的一个小型文本文件,它允许你在网站的根目录或其他子目录下进行一些基本的服务器配置,如重定向、URL 重写、错误页面定制以及安全设置等,而无需修改全局的 `httpd.conf` ...

    .htaccess文件保护实例讲解

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

    Apache服务器中.htaccess的基本配置总结

    Apache服务器中的`.htaccess`文件是一个非常重要的分布式配置文件,它允许用户在特定的文档目录层级上设置配置,以控制该目录及其所有子目录的行为,而无需修改全局服务器配置。以下是一些基本的`.htaccess`配置总结...

    Apache实验.docx

    在这个实验中,我们将深入理解Apache服务器的安装、配置以及客户端验证的过程。实验主要涵盖了四个关键部分:用户权限认证、基于IP地址和端口号的虚拟主机配置、基于域名的虚拟主机配置以及个人主页的配置。 首先,...

    如何保护Linux系统下的Apache网站(1)

    在Linux和Apache服务器中,我们可以利用`.htaccess`文件,这是一种配置文件,允许我们对特定目录及其子目录进行自定义配置,包括密码保护。 首先,我们需要创建一个名为`.htpasswd`的文件,这个文件将存储经过加密...

    Apache服务器配置Web页面访问权限.docx

    Apache 服务器配置 Web 页面访问权限 Apache 服务器是当今最流行的 Web 服务器之一,如何配置 Apache 服务器的 Web 页面访问权限是很多开发者和管理员关心的问题。下面将详细介绍如何在 Linux+Apache 上实现 Web ...

    Apache服务器.pdf

    ### Apache服务器配置详解 #### 一、引言 Apache服务器作为全球互联网上最广泛使用的Web应用服务之一,凭借其强大的功能、高效的性能以及快速的响应能力,在业界享有盛誉。更重要的是,Apache不仅可以免费获取,...

    使用Apache的htaccess防止图片被盗链的解决方法

    Apache服务器是当前最常见的服务器之一,它支持名为`.htaccess`的分布式配置文件,可让网站管理员在特定目录下使用访问控制指令,而不需要访问服务器的主配置文件。利用`.htaccess`文件,可以非常方便地实现图片的...

    .htaccess重定向和url重写详细介绍

    `.htaccess` 文件是 Apache 服务器配置中的一种小型文本文件,它允许你在网站的根目录下进行局部配置,实现对单个目录或其子目录的控制。它支持多种功能,如URL重定向、URL重写、自定义错误页面、限制访问权限、设置...

    Apache资料用户认证资料

    在Apache中,用户认证通常通过配置`.htaccess`和`.htpasswd`文件实现。`.htaccess`文件是服务器上的一个配置文件,允许我们在特定目录级别设置访问控制。`.htpasswd`文件则存储了用户的用户名和加密后的密码,每行...

    htAdmin - .htaccess administration-开源

    .htaccess 文件是 Apache 服务器中的一个配置文件,允许管理员在特定目录级别自定义服务器行为,包括重定向、URL 重写、限制访问和设置密码保护等。htAdmin 将这些复杂的命令行操作转化为直观的图形界面,让非技术...

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

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

Global site tag (gtag.js) - Google Analytics