记忆盒子

把记忆装进灰色的盒子,封装起来,那年那月,重新拾起。

首页搜索目录
search
当前主题: 互联网络

apache屏蔽某UA: SetEnvIfNoCase User-Agent 的正确写法

作者:Kaka    时间:2017-9-8 10:3:26    浏览:    评论:0

apache屏蔽某UA,是通过设置 SetEnvIfNoCase User-Agent 来实现,不过我发现网上很多文章的写法是不正确的,我亲测后,把正确的写法记下来,同时也把错误的写法记下来,以被日后参考。

举例说明,假如apache要屏蔽的UA包含字符串“Googlebot”,那么 SetEnvIfNoCase User-Agent 的设置该如何写呢?

正确写法是:

SetEnvIfNoCase User-Agent ^.*Googlebot.* bad_bot

Order allow,deny
Allow from all

Deny from env=bad_bot

错误写法:

SetEnvIfNoCase User-Agent "^.*Googlebot.*" bad_bot

...

代码分析:

符号“^”表示字符串开始位置,“.*”表示任意字符。

错误的写法是多了双引号“"”,SetEnvIfNoCase User-Agent 后面的字符串是不需要用双引号引住的,否则是设置错误,不能按预期屏蔽某个UA。

但如果字符串不需要用到正则时,可以用双引号。例如下面的例子写法:

SetEnvIfNoCase User-Agent "Baiduspider" bad_bot

Order Allow,Deny
Allow from All

Deny from env=bad_bot

SetEnvIfNoCase User-Agent "Baiduspider" 是指这个UA的字符串中包含 Baiduspider 这几个字符。本例 Baiduspider 要不要双引号都可以,因为没有用到正则

知识扩展:一个很有用的apache指令SetEnvIfNoCase

说明:根据请求的属性设置环境变量,而不考虑情况。

语法:SetEnvIfNoCase 属性 正则 [!]环境变量[=值] [[!]环境变量[=值]] ...

上下文:服务器配置, 虚拟主机, 目录, .htaccess

覆盖项:FileInfo

状态:Base

模块:mod_setenvif

兼容性:Apache 1.3 and above

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

SetEnvIfNoCase Host Apache\.Org site=apache

如果 HTTP 请求头“Host:”包含 Apache.Org, apache.org,或其他任何组合,就把环境变量 site 的值设为“apache”。

SetEnvIfNoCase 当满足某个条件时,为变量赋值,一般结合其他指令使用。

如:

1、

SetEnvIf Request_URI "/logo(.)+" local_ref=0
Allow from env=local_ref

local_ref有值时,可以访问。

2、

SetEnvIfNoCase Request_URI .js$ useless-file
CustomLog logs/hebgc.com/access.log combined env=!useless-file

当满足条件时才记录日志。

x

标签: apache  

※ 网站速度慢?试试网站自动优化工具 ※

上一篇: 百度SEO:文章标题多少个字为好
下一篇: JS获得客户端IP的方法【来自sohu的API接口】

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客                   QQ交流群(312716741)

  • 通过Google订阅本站 通过鲜果订阅本站 通过抓虾订阅本站
  • 通过QQ邮箱订阅本站 通过Yahoo订阅本站 通过有道订阅本站

Search

最新评论及回复

最近留言

网站分类

Powered By Z-Blog 1.8 Walle Build 91204 Designed by Han'space

Copyright @2009-2024 All Rights Reserved. 粤ICP备14028160号-1

Powered By Z-Blog 1.8 Walle Build 91204
Copyright @2009-2024 All Rights Reserved.