在.htaccess文件中validationGooglebot

我已经调查了一下。 下面的代码会工作吗? 不太容易检查。

RewriteEngine on HostnameLookups Double RewriteCond %{REMOTE_HOST} (\.googlebot\.com) [NC] RewriteRule ^(.*)$ /do-something [L,R] 

我最担心的一部分

 HostnameLookups Double 

它说,在某些地方,只适用于httpd.confg,VPS,目录(不要说这是什么意思,如果不是.htaccess但不是说在htaccess中)。 你有这个问题的知识吗?

您可以使用%{HTTP_USER_AGENT}变量的条件:

 RewriteEngine on RewriteCond %{HTTP_USER_AGENT} ^googlebot RewriteRule ^(.*)$ /do-something [L,R] 

请注意, %{HTTP_USER_AGENT}可能被欺骗。

在.htaccess中:

 Order Allow, Deny Allow from googlebot.com Allow from search.msn.com Allow from crawl.yahoo.net Allow from baidu.com Allow from yandex.ru Allow from yandex.net Allow from yandex.com 

也许其他一些搜索引擎也是一个好主意?

从Apace文档: http : //httpd.apache.org/docs/2.2/mod/mod_authz_host.html#allow

…它将对IP地址执行反向DNS查找以查找关联的主机名,然后对主机名执行正向查找以确保其与原始IP地址匹配。 只有正向和反向DNS一致,主机名匹配才能被访问。

 # Validate Googlebots RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5\.0\ \(compatible;\ Googlebot/2\.[01];\ \+http://www\.google\.com/bot\.html\)$ RewriteCond %{HTTP:Accept} ^\*/\*$ RewriteCond %{HTTP:Accept-Encoding} ="gzip,deflate" RewriteCond %{HTTP:Accept-Language} ="" RewriteCond %{HTTP:Accept-Charset} ="" RewriteCond %{HTTP:From} ="googlebot(at)googlebot.com" RewriteCond %{REMOTE_ADDR} ^66\.249\.(6[4-9]|7[0-9]|8[0-46-9]|9[0-5])\. [OR] RewriteCond %{REMOTE_ADDR} ^216\.239\.(3[2-9]|[45][0-9]|6[0-3])\.0 # Optional reverse-DNS-lookup replacement for IP-address check lines above # RewriteCond %{REMOTE_HOST} ^crawl(-([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])){4}\.googlebot\.com$ RewriteRule ^ - [S=1] # Block invalid Googlebots RewriteCond %{HTTP_USER_AGENT} Googlebot [NC] RewriteRule ^ - [F] 

请注意,可选的反向DNS线路仅适用于允许使用反向DNS查询的服务器。

此外,一旦触发rDNS查找,您的访问日志文件的格式将会改变; 它不会再将IP地址显示为每行的第一个条目,而是显示远程主机名。 这可能会极大地影响您的服务器管理进程,并可能导致一些“统计”程序停止正确报告服务器访问摘要。 一旦你的服务器进入这种模式,它将保持这种方式,直到它重新启动。

如果您具有服务器配置权限,则可以轻松地更改日志文件格式,以使其显示Remote_Addr而不是Remote_Host作为每行的第一个条目,而不管rDNS是否通过将日志记录格式中的第一个标记从%h更改为%一个。 请参阅Apache mod_log_config