Необходимо заблокировать пользовательский агент из файла .htaccess
с запрещенной ошибкой. Но этот эффект должен был работать только с Google, Bing и вообще без юзер-агента. Это не работает:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (Google|Bing||onlytogivespace) [NC]
RewriteRule (.*) - [F,L]
Я написал это, но для нулевого пользовательского агента это, похоже, не работает.
Нужна помощь пожалуйста...
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]
DocRoot onlytogivespace был предназначен только для добавления другой позиции в список и показа, что я оставил пустое место 4 RewriteCond %{HTTP_USER_AGENT}. «Обратите внимание, что ^$ соответствует пустой строке» -> Теперь я знаю. Googlebot заблокирован и bingbot тоже. (.*) удаленный. О «RewriteRule (.*) - [F, L]» отметил, что вы написали, спасибо.
DocRoot, ВЫ КОРОЛЬ. Я должен принять ваш ответ, потому что работает отлично. ;)