如何在 .htaccess 中阻止某些机器人但允许访问 robots.txt?

如何在 .htaccess 中阻止某些机器人但允许访问 robots.txt?

我已经使用 .htaccess 阻止了一些恶意机器人。

例如:

SetEnvIfNoCase User-Agent "^bot1" bots
SetEnvIfNoCase User-Agent "^bot2" bots
SetEnvIfNoCase User-Agent "^bot3" bots
<Limit GET POST HEAD>
Order Allow, Deny
Allow from all
Deny from env=bots
Deny from 111.222.333.444
Deny from 555.666.777.888
Deny from 999.000.111.222
</Limit>

我也在 robots.txt 中阻止了他们,但我在 error_log 上看到他们也无法访问 robots.txt:

[client 111.222.333.444] AH01797: client denied by server configuration: /var/www/html/robots.txt

如果其中一些人遵守 robots.txt 的规则,然后停止访问,服务器可以避免一些不必要的响应。这是一个好主意吗?

如何在 .htaccess 中阻止它们但保留访问 robots.txt 的权利?


参考了@djdomi和@MrWhite的建议后,我在.htaccess中做了以下更改:

SetEnvIfNoCase User-Agent "^bot1" bots
SetEnvIfNoCase User-Agent "^bot2" bots
SetEnvIfNoCase User-Agent "^bot3" bots    
<RequireAll>
  Require all granted
  Require not env bots
  Require not ip 111.222.333.444
  Require not ip 555.666.777.888
  Require not ip 999.000.111.222
</RequireAll>
<Files "robots.txt">
  Require all granted
</Files>

这样可以吗?顺序对<RequireAll>和有影响吗<Files>?我没有进一步测试,只知道到目前为止网站访问正常,没有任何服务器错误。

相关内容