在.htaccess文件中验证Googlebot

时间:2014-03-09 09:38:11

标签: apache .htaccess googlebot

我一直在调查。代码如下工作?不太容易检查。

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

我最担心的是

HostnameLookups Double 

它说在某些地方只能在httpd.confg,vps,目录中工作(如果没有.htaccess但在htaccess中没有说,这不是最后的意思)。 你对这个问题有所了解吗?

3 个答案:

答案 0 :(得分:1)

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

RewriteEngine on

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

但请记住,%{HTTP_USER_AGENT}可能会被欺骗。

答案 1 :(得分:0)

在.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 docs:http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#allow

  

...它将对要查找的IP地址执行反向DNS查找   关联的主机名,然后对主机名执行正向查找   确保它与原始IP地址匹配。只有前进   和反向DNS是一致的,主机名匹配将访问   允许的。

答案 2 :(得分:0)

# 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到%a。请参阅Apache mod_log_config