在.htaccess文件中验证GoogleBot



我已经进行了一些研究。下面的代码会工作吗?检查并不容易。

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

我最担心部分

HostnameLookups Double 

它说,在某个地方仅在httpd.confg,vps,目录中起作用(如果不是,则不确定这是什么含义。您对这个问题有了解吗?

.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/mod_authz_host.html#allow

...它将在IP地址上进行反向DNS查找以查找 关联的主机名,然后在主机名上进行正向查找 确保与原始IP地址匹配。只有前进 反向DN和hostname匹配将访问为 允许。

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

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

虽然请记住%{HTTP_USER_AGENT}可能会被欺骗。

# 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查找的服务器上工作。

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

如果您具有服务器配置特权,则可以轻松地更改日志文件格式,以便它显示远程_ADDR,而不是远程_host作为每行的第一个条目,无论是否通过从Locggging格式中更改第一个令牌格式,无论是否启用RDNS%h至%a。请参阅apache mod_log_config

最新更新