我在 Apache 2.4 上运行家庭服务器。存在一些 BING 机器人不尊重 robots.txt 的问题。所以,我想让他们在渗透到某些目录时读取 robots.txt。我的想法是这样的:
案例1.
RewriteCond %{REMOTE_ADDR} ^40\.77\.167\.[0-255]$
RewriteCond %{REQUEST_URI} /forum/ [NC]
RewriteRule ^(.*)$ /robots.txt [L]
它不起作用。 40.77.167.52 进入论坛(例如 /forum/foo.cgi),这是 robots.txt 不允许的。 然后,我尝试分开两条 RewriteCond 行:
案例2.
RewriteCond %{REMOTE_ADDR} ^40\.77\.167\.[0-255]$
RewriteRule .* - [F,NC,L]
这也不起作用。所以我得出结论“RewriteCond %{REMOTE_ADDR} ^40.77.167.[0-255]$”有点错误,但我的眼睛没有发现任何错误。
“LoadModule rewrite_module”处于活动状态并且 RewriteEngine 已打开。其他一些重写确实有效。
我最后的愿望是这样的:
案例3.
RewriteCond %{REMOTE_ADDR} (^40\.77\.167\.)|(^157\.55\.39\.)|(^207\.46\.13\.)|(^65\.55\.210\.)
RewriteCond %{REQUEST_URI} (/forum/)|(/Picture)|(/Lib/PhotoLib)|(/cgi-bin)|(/Lib/jso/) [NC]
RewriteRule .* /robots.txt [L]
请问有哪位大师可以帮助我吗?
想知道我的 httpd.conf 描述中有什么问题。
您可能想首先使用自己的地址而不是 Bing 的地址尝试您的规则,以确保这些规则有效并且您获得预期的
robots.txt
的内容。
但无论如何,重写规则对于客户端来说都是透明的,因此无论这个客户端是什么(蜘蛛机器人或常规浏览器),它永远不会知道他看到的实际上是
robots.txt
的内容,而不是常规目标之一。
此外,请注意该文件只是建议性的。机器人不会被迫尊重它们,尽管每个严肃的搜索引擎都会尊重它们。
您可能想要做的可能是使用
redirection
HTTP 代码进行 30x
,但即使在这种情况下,这也不是您想要遵循的方法。
首先检查
robots.txt
是否位于正确的位置并且可以从外部读取(包括从机器人的角度),然后确保该文件的内容格式也正确。特别要注意的是,规则区分大小写。
Google 搜索中心的