阿帕奇只返回429机器人,为特定的url

我有一个Magento网站与Apache2工作,每天我得到机器人抓取url,我不想要,我想返回429特定的url。

我已经在我的htaccess中尝试过

<ifModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (Yahoo!\Slurp|semrushbot) [NC] Redirect 429 /shop/ricerca/ </ifModule> 

我的机器人在哪里:

yahoo slurp googlebot yandex semrush等

和保护的path是:

 /path/toprotect/ /path/to/protect2/ 

拖尾访问日志似乎我的代码段不工作。

任何人都可以帮助我?

最终如果太乱,我只会使用nginx作为反向代理,并从那里我有更多的经验过滤机器人

有几个错误:

  • 您正在混合mod_rewrite指令( RewriteCond )与mod_alias指令( Redirect )。 你应该有一个RewriteRule ,而不是。

  • 您不能使用具有redirect的HTTP 429“太多请求” 。

    任何有效的HTTP响应状态码都可以使用语法[R=305]来指定,默认情况下使用302状态码,如果没有指定。 指定的状态码不一定是redirect( 3xx )状态码。 但是,如果状态码在redirect范围之外( 399 ),那么replacestring将被全部删除,并且重写被停止,就像使用了L一样。

  • Yahoo!\ Slurp的转义字符\用于转义您缺less的空间。

这些更正后的结果,将所有内容redirect到/shop/ricerca/

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (Yahoo!\ Slurp|semrushbot) [NC] RewriteRule "(.*)" "/shop/ricerca/" [L,R=302] </IfModule> 

或者,如果您不尝试redirect到/shop/ricerca/但是使用429 Too Many Requests保护它:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (Yahoo!\ Slurp|semrushbot) [NC] RewriteRule "^/shop/ricerca/(.+)" - [R=429] </IfModule>