Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 验证.htaccess文件中的Googlebot_Apache_.htaccess_Googlebot - Fatal编程技术网

Apache 验证.htaccess文件中的Googlebot

Apache 验证.htaccess文件中的Googlebot,apache,.htaccess,googlebot,Apache,.htaccess,Googlebot,我被调查过一点。下面的代码可以工作吗?不太容易检查 RewriteEngine on HostnameLookups Double RewriteCond %{REMOTE_HOST} (\.googlebot\.com) [NC] RewriteRule ^(.*)$ /do-something [L,R] 我最担心的是 HostnameLookups Double 它说在某些地方只能在httpd.confg、vps、目录中使用(如果不是.htaccess,则不是舒尔最后一个词的意

我被调查过一点。下面的代码可以工作吗?不太容易检查

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

HostnameLookups Double 
它说在某些地方只能在httpd.confg、vps、目录中使用(如果不是.htaccess,则不是舒尔最后一个词的意思,但在htaccess中没有说明)。
你知道这个问题吗

您可以将条件与
%{HTTP\u USER\u AGENT}
变量一起使用:

RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} ^googlebot
RewriteRule ^(.*)$ /do-something [L,R]
但是请记住,
%{HTTP\u USER\u 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文档:

…它将在IP地址上执行反向DNS查找以查找 关联的主机名,然后对主机名执行正向查找 以确保它与原始IP地址匹配。只有当前锋 反向DNS是一致的,主机名匹配将被访问 允许

请注意,可选的反向DNS线路仅在允许使用反向DNS查找的服务器上工作

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


如果您具有服务器配置权限,则可以轻松更改日志文件格式,使其在每行上显示Remote_Addr而不是Remote_Host作为第一个条目,而不管是否通过将日志格式中的第一个令牌从%h更改为%a来启用RDN。请参阅我在上面的更改中添加的Apache mod_log_config。你有意见吗。上面的部分:主机名查找上的RewriteEngine Double RewriteCond%{REMOTE\u HOST}(\.googlebot\.com)[NC]RewriteRule^(.*)/做点什么[L,R]事实上,如果这是你主要关心的问题,我不太了解
主机名查找Double
。这对你来说应该很容易。HTTP\u用户\u代理可能被欺骗,因此这是不可靠的。您测试过这个吗?当用户代理为
谷歌机器人时,它将如何加载
/执行某些操作
?是的,它可以工作,谷歌提供了这个测试工具:。请记住,“用户代理”很容易被欺骗,因为它只是由发出请求的任何软件添加到HTTP请求中的文本字符串。例如,您可以使用更改您的Chrome用户代理。从googlebot的角度来看,
/do something
页面将像任何公共页面一样被加载。问题不在于它是否能够爬行。当用户代理是googlebot时,它将如何服务于
/做一些事情
URI?是的,我知道欺骗。嗯,不确定我现在是否理解你的问题。web服务器正在“服务”,如果允许访问,它将以通常的方式进行服务。用户代理是不相关的。那有帮助吗?啊,是的,仔细阅读之后,我想你是对的。我专注于标题“在.htaccess文件中验证Googlebot”。抱歉-1@anubhava,堆栈溢出将不允许我更改它,除非您的答案被编辑。。。杰出的
# 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]