使用htaccess阻止所有机器人/爬虫/蜘蛛获取特殊目录

tes*_*ing 6 .htaccess seo search-engine

我正在尝试阻止所有机器人/爬虫/蜘蛛的特殊目录.我怎么能这样做htaccess?我搜索了一下,通过基于用户代理的阻塞找到了解决方案:

RewriteCond %{HTTP_USER_AGENT} googlebot
Run Code Online (Sandbox Code Playgroud)

现在我需要更多的用户代理(对于所有已知的机器人),规则应仅对我的单独目录有效.我已经有了robots.txt,但并非所有抓取工具都会看到它...阻止IP地址不是一种选择.还是有其他解决方案吗?我知道密码保护但我必须首先询问这是否是一个选项.然而,我寻找基于用户代理的解决方案.

Laz*_*One 18

您需要启用mod_rewrite.将它放在该文件夹中的.htaccess中.如果放在其他位置(例如父文件夹),则需要稍微修改RewriteRule模式以包含该文件夹名称).

RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} (googlebot|bingbot|Baiduspider) [NC]
RewriteRule .* - [R=403,L]
Run Code Online (Sandbox Code Playgroud)
  1. 我只输入了几个机器人 - 你自己添加其他机器人(信件无关紧要).
  2. 此规则将响应此类请求的"403 Access Forbidden"结果代码.如果您真的需要,可以更改为另一个响应HTTP代码(403最适合考虑您的要求).

  • 我在哪里可以获得机器人列表?我可以使用`RewriteRule /var/www/html/myweb/.* - [R = 403,L]`? (2认同)

anu*_*ava 10

为什么要将.htaccess或mod_rewrite用于专门用于的工作robots.txt?以下是您需要阻止特定目录集的robots.txt片段.

User-agent: *
Disallow: /subdir1/
Disallow: /subdir2/
Disallow: /subdir3/
Run Code Online (Sandbox Code Playgroud)

这将阻止在目录中的所有搜索机器人/subdir1/,/subdir2//subdir3/.

有关更多说明,请参见此处:http://www.robotstxt.org/orig.html

  • 检查原始问题:“......我已经有一个robots.txt但不是所有的爬虫都看看它......” (2认同)
  • 检查您的Web服务器日志 - 您将找到它们.当然 - 大牌(如Google,Bing等)不会这样做,但**一些**较小(或假的)经常要求robots.txt中禁止的页面(例如客户帐户区域等,其中用户必须登录/内容仅限该用户).如果OP想要处理它们 - 那么为什么不呢 - 这是他的时间. (2认同)
  • 当然,如果机器人忽略 robots.txt,它可能会伪造其 HTTP_USER_AGENT。这只是阻止那些不谎报身份的机器人,而且还故意忽略 robots.txt 与 robots.txt 相反,另一个需要这样做的原因是:如果您不是网站管理员,您可能无法更改机器人.txt,但您可以将 .htaccess 放在您自己的目录中。 (2认同)

Cha*_*les 5

我知道这个话题很"老"但是,对于那些也来到这里的人来说(我也一样),你可以看看2013年的5g黑名单.
这是一个很好的帮助,不仅适用于wordpress,也适用于所有其他网站.工作真棒imho.
另一个值得关注的可能是Linux评论反垃圾邮件通过.htaccess