我有一个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>