Aapche 主配置文件

Apache 访问控制相关指令作用域

AllowOverride 指令是否启用 .htaccess 文件


说明 确定允许存在于.htaccess文件中的指令类型
语法 AllowOverride All
默认值 AllowOverride None (2.3.9 and later), AllowOverride All (2.3.8 and earlier)
作用域 directory
状态 核心(C)
模块 core
  • 当服务器发现一个 .htaccess 文件(由 AccessFileName 指定时),它需要知道在这个文件中声明的哪些指令能覆盖在此之前指定的配置指令。

  • 仅允许存在于配置段

  • 如果此指令被设置为None ,那么.htaccess 文件将被完全忽略。事实上,服务器根本不会读取.htaccess文件。

  • 当此指令设置为 All 时,所有具有”.htaccess“作用域的指令都允许出现在.htaccess 文件中。

  • 该指令类型可指示以下分组之一。(有关每个指令类型启用哪些指令的最新列表, 请参阅 override 类索引。)


指令名称 指令作用 指令
AuthConfig 允许使用与认证授权相关的指令 (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
FileInfo 允许使用控制文档类型 (ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, and mod_mime Add * and Remove* directives),
控制文档元数据的指令 (Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName),
mod_rewrite 中的指令 (RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule),
mod_alias 中的指令 (Redirect, RedirectTemp, RedirectPermanent, RedirectMatch)
 mod_actions 中的 Action 指令。
Indexes 允许使用控制目录索引的指令 (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, etc.).
Limit 允许使用控制主机访问的指令 (Allow, Deny, Order)。
Options[=Option,…] 允许使用控制指定目录功能的指令 (OptionsXBitHack) 
可以在等号后面附加一个逗号分隔的(无空格的) Options 选项列表,用来控制允许 Options 指令使用哪些选项。
Nonfatal=
[Override|Unknown|All]
允许使用 AllowOverride选项将.htaccess中的语法错误视为非致命错误。不会导致内部服务器错误,将忽略不允许或无法识别的指令并记录警告:
Nonfatal = Override 将 AllowOverride 禁止的指令视为nonfatal。
Nonfatal = Unknown 将未知指令视为非致命指令。这包括由不存在的模块实现的拼写错误和指令。
Nonfatal = All 将上述两种视为非致命性。
  • 例:

参见

 

Require 指令 访问控制


说明 指定哪些认证用户允许访问该资源
语法 Require entity-name [entity-name] …
作用域 directory, .htaccess
覆盖项 AuthConfig
状态 Base(基础)
模块 mod_authz_core

 

  • 此指令根据特定授权提供程序和指定的限制来测试经过身份验证的用户是否已获得授权。mod_authz_core提供以下通用授权提供程序:
指令 参数 说明
Require all granted 无条件允许访问。
Require all denied 无条件拒绝访问。
Require env env-var [env-var] … 仅当设置了一个给定的环境变量时才允许访问。
Require method http-method [http-method] … 仅允许对给定的HTTP方法进行访问。
Require expr expression 如果 expression 的计算结果为true,则允许访问。有些提供的允许的语法是 mod_authz_user mod_authz_host  mod_authz_groupfile
Require user userid [userid] … 只有指定的用户才能访问该资源。
Require group group-name [group-name] … 只有命名组中的用户才能访问该资源。
Require valid-user 所有有效用户都可以访问该资源。
Require ip 10 172.20 192.168.2 指定IP地址范围内的客户端可以访问该资源。
  • 例如:

 

参见

 

<Location> 指令 URL 封装


说明 将封装的指令作用于匹配的URL
语法 <Location URL-path
作用域 server config, virtual host
状态 核心(C)
模块 core

!何时使用 <Location> 使用 <Location> 来将指令应用于独立于文件系统之外的内容。文件系统之内的内容请使用 <Directory>  <Files> 指令。不过一个例外是 <Location /> ,它可以方便的作用于所用URL。

 

  • <Location> 配置段完全独立于文件系统之外操作。
  • 最重要的是 <Location> 不能用于针对文件系统的访问控制。因为可能会有几个不同的 URL 指向文件系统中的同一个文件,所以这样的控制常常会被很容易的绕过。
  • 如果 URL 的路径组件满足以下任何条件,则所附的指令将应用于以下请求:
    1. 指定的位置与 URL 的路径组件完全匹配。
    2. 指定的位置以 “/” 正斜杠结尾,是 URL 的路径组件的前缀(视为上下文根)。
    3. 添加了 “/” 斜杠的指定位置是 URL 的路径组件的前缀(也被视为上下文根)。
  • 在下面的示例中,没有使用尾部斜杠,对 /private1、 /private1/  /private1/index.html 的请求将应用所附的指令.
  •  /private1other 不会。

  • 在下面的示例中,使用尾部斜杠,对 /private2/  /private2/index.html 的请求将应用所附的指令.
  •  /private2  /private2other 不会。

  • 对所有的原始 (非代理) 请求来说,匹配的 URL 应该是具有 “/path/” 形式的URL路径。不包括访问方法、主机名、端口或查询字符串等。
  • 对于代理的请求,匹配的 URL 必须为 “scheme://servername/path” 的形式,而且必须包括前缀。
  • URL 可以用一个通配符字符串来进行通配符的处理。
  • “?” 匹配任何单个的字符,而 “*” 匹配所有字符序列。也可以附加 “~” 字符来表示使用正则表达式。

例如下列所示:

  • 将匹配所有包含字符串 “/extra/data” 或 “/special/data” 的URL。
  • 在A pache1.3 及其后续版本中,加入了一个新的推荐使用的 <LocationMatch> 指令,其功能与 <Location> 的正则表达式版本相同。

  •  <Location>  SetHandler 指令结合时,功能特别有用。
  • 例如,要启用状态请求,但只允许来自 example.com 的浏览器,可以像下列使用:

请注意”/”(斜线)

斜线字符根据它在 URL 中出现的位置不同有着特殊的意义。可能都已经习惯在文件系统中,多个连续的斜线会被作为单一的斜线处理 (例如”/home///foo” 与 “/home/foo” 相同)。

但在 URL 里面,这样是行不通的。<LocationMatch> 指令和正则表达式版本的 <Location> 要求明确使用多重斜线。

  • 比如:<LocationMatch ^/abc> 将匹配请求 “/abc”,但不会匹配请求 “//abc”。

而非正则表达式版本的 <Location> 指令在用于代理请求时,也有类似表现。
但当非正则表达式版本的 <Location> 作用于非代理请求时,它会将多个毗邻的斜线认作单个斜线。

  • 比如,如果指定了 <Location /abc/def> 而请求是指向 “/abc//def” 的,那么它们就是匹配。

参阅

发表评论