从 apache 访问日志中过滤 googlebot 时出现问题

从 apache 访问日志中过滤 googlebot 时出现问题

虽然这看起来应该很简单,但我无法配置 apache,以便 googlebot 的请求不会存储在访问日志中。我尝试了以下几行:

SetEnvIfNoCase User-Agent googlebot dontlog
BrowserMatchNoCase googlebot dontlog
CustomLog "/foo/bar/access_log" combined env=!dontlog

添加它们后我重新启动了 apache,但日志仍然记录了所有 google bot 的请求。我的理解是 SetEnvIf User-Agent 和 BrowserMatch 做同样的事情。我试过了每一个,但都没有用。

答案1

找到您怀疑是 Googlebot 的日志条目并记下其 IP 地址。

接下来使用以下命令查找该 IP 地址:

host 66.249.64.156

不要忘记用此命令替换您之前记录的 IP 地址。

如果结果看起来像这样,那么您就知道这是 Googlebot。您要确保它以以下内容结尾googlebot.com

156.64.249.66.in-addr.arpa domain name pointer crawl-66-249-64-156.googlebot.com.

接下来,转到您的 Apache2 虚拟主机并添加适合您网站的以下指令:

SetEnvIf Remote_Addr "66.249.64.156" AND User-Agent "Googlebot" do_not_log
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!do_not_log

您可以对 bingbot 重复此过程:

host 157.55.39.247

条目应该以search.msn.com这样的形式结尾

247.39.55.157.in-addr.arpa domain name pointer msnbot-157-55-39-247.search.msn.com.

因此,您需要在 Virtualhost 文件中的 Googlebot 行后添加额外的行:

SetEnvIf Remote_Addr "157.55.39.247" AND User-Agent "bing" do_not_log

通常 Googlebot 和 MSN bot 会使用相同的 IP 来检查您的页面,但如果不是,您可能需要添加其他条目。您可能只是为了"^66"方便而使用。

https://support.google.com/webmasters/answer/80553

https://blogs.bing.com/webmaster/2012/08/31/how-to-verify-that-bingbot-is-bingbot/

相关内容