Вопрос по nginx

12
Serega75
На сайте с 10.09.2009
Offline
71
988

В .htaccess использую такую конструкцию:

SetEnvIfNoCase User-Agent "GoodBot" good_bot


<Files file.php>
Order Deny,Allow
Deny from all
Allow from env=good_bot
</Files>

Как ее можно заменить в nginx? Перерыл пол интернета не нашел.

M
На сайте с 24.10.2011
Offline
173
#1

location /file.php {
if ($http_user_agent != "GoodBot")
{ return 403; }
}
DV
На сайте с 01.05.2010
Offline
644
#2

michaek

Раз пошла такая пьянка…

Вот у меня сейчас есть конструкция для нескольких ботов:

if ( $http_user_agent ~* (MJ12bot|SearchBot|xUSAx|xpymep) ){

rewrite ^(.*)$ http://пшёл_куда-то_там/ permanent;
}
Хочу добавить (к примеру) что-то посложнее, например "Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.7.39 Version/11.00".

Не в курсе, на какой манер экранировать пробелы и спецсимволы?

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
M
На сайте с 24.10.2011
Offline
173
#3

"(User-agent 1|User-agent 2)" нормально работает

скобки через \( и \) заэкранировать

Glueon
На сайте с 26.07.2013
Offline
172
#4

DenisVS, иожете, кстати, использовать map для таких случаев. В том числе удобно, если нужно делать redirect в разные места на основе User Agent. Например:


map $http_user_agent $redirect {
default '';
~(Android|iPhone) iphone-android.com;
~(Opera|Mozilla) mozilla.com;
}
.....
if ($redirect != '') {
rewrite ^ https://$redirect$request_uri? permanent;
}

А экранируется через "\". А вот пробел возможно "\s"

Есть много IP-сетей в аренду под прокси, парсинг, рассылки (optin), vpn и хостинг. Телега: @contactroot ⚒ ContactRoot команда опытных сисадминов (/ru/forum/861038), свой LIR: сдаем в аренду сети IPv4/v6 (/ru/forum/1012475).
Serega75
На сайте с 10.09.2009
Offline
71
#5
michaek:
location /file.php {

if ($http_user_agent != "GoodBot")
{ return 403; }
}

Не работает.

Glueon
На сайте с 26.07.2013
Offline
172
#6
Serega75:
Не работает.

А file.php и соотвественно .htaccess где находятся? В указанном куске из nginx подразумевается, что в корне ... + если все верно проблема может быть в том, что у вас сравнение NotCaseSensitve в htaccess, а в примере с nginx - по-идее регистрозависимая. Нужно переписать с отрицанием и "~*".

M
На сайте с 24.10.2011
Offline
173
#7

Serega75, полностью запрос в логе как выглядит? только без всяких GoodBot итп

Serega75
На сайте с 10.09.2009
Offline
71
#8
michaek:
Serega75, полностью запрос в логе как выглядит? только без всяких GoodBot итп

Так и выглядит, какая разница GoodBot или BestBot?

В логах он отображается как "GoodBot". Т.е. с регистром у меня в .htaccess

UNIT-IS
На сайте с 19.10.2012
Offline
48
#9

location /file.php {
deny all;
allow env=good_bot;
}
Serega75
На сайте с 10.09.2009
Offline
71
#10
UNIT-IS:
location /file.php {

deny all;
allow env=good_bot;
}

Шутить изволите? :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий