我想阻止yandex离开我的网站。我尝试过在其他线程中发布的解决方案,但是它们不起作用,所以我想知道我是否做错了什么?
用户代理字符串是:
Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots我试过以下几种(一次一次)。RewriteEngine开着
SetEnvIfNoCase User-Agent "^yandex.com$" bad_bot_block
Order Allow,Deny
Deny from env=bad_bot_block
Allow from ALL
SetEnvIfNoCase User-Agent "^yandex.com$" bad_bot_block
<RequireAll>
Require all granted
Require not env bad_bot_block
</RequireAll>有谁能看到上述其中之一不起作用的原因或有什么其他建议吗?
发布于 2022-07-28 18:55:20
如果其他人有此问题,以下几点对我来说是有效的:
RewriteCond %{HTTP_USER_AGENT} ^.*(yandex).*$ [NC]
RewriteRule .* - [F,L]发布于 2022-07-26 23:22:49
SetEnvIfNoCase用户-代理"^yandex.com$“bad_bot_block
使用regex中的开始和结束字符串锚点,您将基本检查用户代理字符串是否完全等于"yandex.com“(除了.是任何字符),这显然与指定的用户代理字符串不匹配。
您需要检查User-Agent头是否包含"YandexBot“(或"yandex.com")。您也可以在这里使用区分大小写的匹配,因为真正的Yandex机器人不会改变情况。
例如,尝试以下方法:
SetEnvIf User-Agent "YandexBot" bad_bot_block考虑使用BrowserMatch指令,这是SetEnvIf User-Agent的一个快捷方式。
如果您使用Apache2.4,那么您应该使用两个代码块的Require (第二个)变体。Order、Deny和Allow指令是Apache2.2,以前在Apache2.4上不推荐。
但是,首先考虑使用robots.txt来阻止爬行。Yandex supposedly supports robots.txt。
https://stackoverflow.com/questions/73125671
复制相似问题