Apache2 Referer日志 – 过滤我自己的服务器查阅者

我有一个显示引用者,请求的服务器/ url和用户代理的自定义日志文件:

LogFormat "\"%{Referer}i\" -> \"%v%U\" \"%{User-Agent}i\"" referer2 

这很好,差不多。 它忠实地报告任何图像,C​​SS文件,JavaScript等请求。现在我有apache2服务几个域名,所以我不相信写域名filter是非常明智的,因为他们往往来来去去。

 "-" -> "http://www.example.com" "Firefox" "http://www.example.com" -> "http://www.example.com/foo.css" "Firefox" "http://www.example.com" -> "http://www.example.com/foo.jpg" "Firefox" 

什么是最好的方法来过滤来自example.com的引用请求,也可能被称为other.example.com,foobar.com或what-is-he-thinking.com,但都来自相同的IP ? 这是可能的,而不必解决每个请求的IP地址?

您可能希望查看更多关于CustomLog指令的文档: http : //httpd.apache.org/docs/current/mod/mod_log_config.html#customlog

我假设你已经为referer2设置了一个CustomLog。 你也可以附加“env =”作为testing,看看是否有什么东西甚至会触发日志。 结合一个SetEnvIf指令,你可以控制是否有任何东西被logging到你的CustomLog。

以下是Apache文档中的一个示例,如果uri以.gif结尾,则该文档仅logging到“gif-requests.log”文件中:

 SetEnvIf Request_URI \.gif$ gif-image CustomLog gif-requests.log common env=gif-image CustomLog nongif-requests.log common env=!gif-image 

我意识到我误解了你原来的要求。 您将很可能必须创build和pipe理您要使用mod_setenvif忽略的查阅者列表

 SetEnvIf Referer "example\.com" donotlog SetEnvIf Referer "what-is-he-thinking\.com" donotlog CustomLog /var/log/apache2/access.log referer2 env=!donotlog 

这将不会logging列出的主机的连接。 您可以将所有这些放在一个单独的文件中,并将其包含在适当位置的configuration中。

一个普遍的误解是,那些试图帮助我的人们是Apache服务的是一组已知的域名,但事实并非如此。 这就是为什么我不能只过滤一个域。

看来我的方法不适用于Apache,而且需要一个脚本。

感谢球员试图帮助!