需要通过使用.htaccess提供禁止的错误403来阻止Google bot,Bing bot和具有空用户代理的客户端

时间:2019-05-17 22:28:06

标签: .htaccess mod-rewrite

需要使用禁止的错误来阻止.htaccess文件中的用户代理。但是,这种效果只能在Google,Bing以及根本没有用户代理的地方使用。这不起作用:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (Google|Bing||onlytogivespace) [NC]  
RewriteRule (.*) - [F,L]

我写了这个,但是对于空用户代理,它似乎不起作用。

需要帮助...

1 个答案:

答案 0 :(得分:1)

RewriteCond %{HTTP_USER_AGENT} (Google|Bing||onlytogivespace) [NC]  
RewriteRule (.*) - [F,L]

这将阻止每个用户代理。因为RewriteCond指令中的正则表达式正在检查用户代理是否包含“”(什么都没有)-并非等于空字符串。此正则表达式将成功匹配每个字符串/用户代理,因此将阻止所有内容。

要匹配一个空的用户代理,您需要将正则表达式更改为:(Google|Bing|^$|onlytogivespace)。请注意^$以匹配一个空字符串。

其他说明:

  • 您不需要NC指令上的RewriteCond标志。您知道Googlebot始终为Googlebot,bingbot始终为bingbot
  • 使用L时,不需要RewriteRule指令上的F标志。在这种情况下暗指L
  • (.*)是不必要的,因为您不需要显式匹配URL路径,也不需要反向引用。
  • 不确定onlytogivespace的用途是什么?

因此,可以将其重写:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (Googlebot|bingbot|^$)
RewriteRule ^ - [F]