Нужно заблокировать бота Google, бота Bing и клиентов с нулевым пользовательским агентом, выдав запрещенную ошибку 403 с помощью .htaccess - PullRequest
1 голос
/ 18 мая 2019

Необходимо заблокировать пользовательский агент из файла .htaccess с запрещенной ошибкой.Но этот эффект должен был работать только с Google, Bing и там, где нет никакого пользовательского агента.Это не работает:

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

Я написал это, но для нулевого пользовательского агента это не похоже на работу.

Нужна помощь, пожалуйста ...

1 Ответ

1 голос
/ 18 мая 2019
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]
...