我已经进行了一些研究。下面的代码会工作吗?检查并不容易。
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