<-
Apache HTTP 服务器 2.4 > Apache模块mod_setenvif

Apache模块mod_setenvif

描述:允许根据请求的特征设置环境变量
状态:基础
模块标识符:setenvif_module
源文件:mod_setenvif.c

摘要

mod_setenvif模块允许您根据请求的不同方面是否匹配您指定的正则表达式来设置内部环境变量。服务器的其他部分可以使用这些环境变量来决定要采取的操作,以及可以用于CGI脚本和SSI页面。

指令按照它们在配置文件中出现的顺序进行考虑。因此,可以使用更复杂的序列,例如本示例,该序列设置netscape浏览器是否为mozilla而非MSIE。

BrowserMatch ^Mozilla netscape
BrowserMatch MSIE !netscape

当服务器通过内部子请求(例如查找DirectoryIndex 或使用生成目录列表)查找路径时, mod_autoindex请求中不会继承每个请求的环境变量。此外,SetEnvIf由于API阶段mod_setenvif会采取行动, 因此不会在子请求中单独评估指令 。

支持Apache!

指令

错误修正清单

也可以看看

最佳

BrowserMatch 指令

描述:设置以HTTP User-Agent为条件的环境变量
句法:BrowserMatch regex [!]env-variable[=value] [[!]env-variable[=value]] ...
内容:服务器配置,虚拟主机,目录,.htaccess
覆写:文件信息
状态:基础
模块:mod_setenvif

BrowserMatchSetEnvIf伪指令的特殊情况,该 伪指令将环境变量设置为以User-AgentHTTP请求标头为条件 。以下两行具有相同的效果:

BrowserMatch Robot is_a_robot
SetEnvIf User-Agent Robot is_a_robot

一些其他示例:

BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
BrowserMatch MSIE !javascript
最佳

BrowserMatchNoCase 指令

描述:设置环境变量以用户代理为条件,不考虑大小写
句法:BrowserMatchNoCase regex [!]env-variable[=value] [[!]env-variable[=value]] ...
内容:服务器配置,虚拟主机,目录,.htaccess
覆写:文件信息
状态:基础
模块:mod_setenvif

BrowserMatchNoCase指令在语义上与该BrowserMatch指令相同。但是,它提供不区分大小写的匹配。例如:

BrowserMatchNoCase mac platform=macintosh
BrowserMatchNoCase win platform=windows

BrowserMatchBrowserMatchNoCase指令是特殊情况SetEnvIfSetEnvIfNoCase 指令。以下两行具有相同的效果:

BrowserMatchNoCase Robot is_a_robot
SetEnvIfNoCase User-Agent Robot is_a_robot
最佳

SetEnvIf 指令

描述:根据请求的属性设置环境变量
句法:SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...
内容:服务器配置,虚拟主机,目录,.htaccess
覆写:文件信息
状态:基础
模块:mod_setenvif

SetEnvIf指令根据请求的属性定义环境变量。在第一个参数中指定的 属性可以是以下四种之一:

  1. HTTP请求标头字段( 有关这些的更多信息,请参阅RFC2616);例如:HostUser-AgentReferer,和 Accept-Language。正则表达式可用于指定一组请求标头。
  2. 请求的以下方面之一:
    • Remote_Host -发出请求的客户端的主机名(如果有)
    • Remote_Addr -发出请求的客户端的IP地址
    • Server_Addr -在其上接收到请求的服务器的IP地址(仅适用于2.0.43之后的版本)
    • Request_Method-所使用的方法的名称(GETPOST等等
    • Request_Protocol-发出请求的协议的名称和版本(例如 “ HTTP / 0.9”,“ HTTP / 1.1”
    • Request_URI-HTTP请求行上请求的资源-通常是方案后面的URL部分和主机部分,没有查询字符串。有关如何匹配查询字符串的更多信息,请参见的RewriteCond 指令mod_rewrite
  3. 与请求关联的环境变量列表中的环境变量的名称。这允许 SetEnvIf指令针对先前匹配的结果进行测试。只有较早的SetEnvIf[NoCase]指令定义的那些环境变量 才能以这种方式进行测试。“更早”是指它们是在更广泛的范围内定义的(例如在服务器范围内),或者在当前指令的范围内进行了定义。仅当请求特征之间不匹配并且该属性未使用正则表达式时,才考虑环境变量。

第二个参数(regex)是一个正则表达式。如果正则表达式attribute相匹配,则将评估其余参数。

其余参数提供要设置的变量的名称,以及可以选择设置的值。这些采取的形式

  1. varname, 要么
  2. !varname, 要么
  3. varname=value

在第一种形式中,该值将设置为“ 1”。第二个将删除给定的变量(如果已定义),第三个将将该变量设置为由给出的文字值 value。从2.0.51版本开始,Apache httpd将识别出现在 值中$1.. 并将其替换为regex的带括号的子表达式。提供对该模式匹配的整个字符串的访问。$9$0

SetEnvIf Request_URI "\.gif$" object_is_image=gif
SetEnvIf Request_URI "\.jpg$" object_is_image=jpg
SetEnvIf Request_URI "\.xbm$" object_is_image=xbm
    
SetEnvIf Referer www\.mydomain\.example\.com intra_site_referral
    
SetEnvIf object_is_image xbm XBIT_PROCESSING=1
    
SetEnvIf Request_URI "\.(.*)$" EXTENSION=$1

SetEnvIf ^TS  ^[a-z]  HAVE_TS

object_is_image如果请求是用于图像文件,则前三个将设置环境变量,intra_site_referral如果引用页面位于www.mydomain.example.com网站上的某个位置,则 前四个将设置环境变量 。

HAVE_TS如果请求包含以“ TS”开头的任何标头,且其值以集合[az]中的任何字符开头,则最后一个示例将设置环境变量 。

也可以看看

最佳

SetEnvIfExpr 指令

描述:根据ap_expr表达式设置环境变量
句法:SetEnvIfExpr expr [!]env-variable[=value] [[!]env-variable[=value]] ...
内容:服务器配置,虚拟主机,目录,.htaccess
覆写:文件信息
状态:基础
模块:mod_setenvif

SetEnvIfExpr指令定义的环境变量基础上的<If> ap_expr。这些表达式将在运行时进行评估,并以与相同的方式应用env-variableSetEnvIf

SetEnvIfExpr "tolower(req('X-Sendfile')) == 'd:\images\very_big.iso')" iso_delivered

iso_delivered 每次我们的应用程序尝试通过发送环境变量时,都会设置环境变量X-Sendfile

一个更有用的示例是,如果远程IP地址是根据RFC 1918的私有地址,则设置变量rfc1918:

SetEnvIfExpr "-R '10.0.0.0/8' || -R '172.16.0.0/12' || -R '192.168.0.0/16'" rfc1918

也可以看看

最佳

SetEnvIfNoCase 指令

描述:根据请求的属性设置环境变量,而不考虑大小写
句法:SetEnvIfNoCase attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...
内容:服务器配置,虚拟主机,目录,.htaccess
覆写:文件信息
状态:基础
模块:mod_setenvif

SetEnvIfNoCase语义上与SetEnvIf指令相同,不同之处仅在于,正则表达式匹配以不区分大小写的方式执行。例如:

SetEnvIfNoCase Host Example\.Org site=example

这将导致site环境变量被设置为“ example如果HTTP请求报头字段” Host:被列入并且包含 Example.Orgexample.org或任何其他组合。

可用语言: zh  |  fr  |  ja  |  ko  |  TR 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。