RewriteCond REMOTE_ADDR 未捕获 IP

问题描述 投票:0回答:1

我在 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 描述中有什么问题。

httpd.conf bing
1个回答
0
投票

您可能想首先使用自己的地址而不是 Bing 的地址尝试您的规则,以确保这些规则有效并且您获得预期的

robots.txt
的内容。

但无论如何,重写规则对于客户端来说都是透明的,因此无论这个客户端是什么(蜘蛛机器人或常规浏览器),它永远不会知道他看到的实际上是

robots.txt
的内容,而不是常规目标之一。

此外,请注意该文件只是建议性的。机器人不会被迫尊重它们,尽管每个严肃的搜索引擎都会尊重它们。

您可能想要做的可能是使用

redirection
HTTP 代码进行
30x
,但即使在这种情况下,这也不是您想要遵循的方法。

首先检查

robots.txt
是否位于正确的位置并且可以从外部读取(包括从机器人的角度),然后确保该文件的内容格式也正确。特别要注意的是,规则区分大小写。

Google 搜索中心的

robots.txt

© www.soinside.com 2019 - 2024. All rights reserved.