Page 1 of 1

.htaccess в директорию /home/admin/web/

Posted: Tue Oct 29, 2019 3:54 pm
by ruport
Блокирую запросы ботов к сайтам с помощью .htaccess в корне каждого сайта

Code: Select all

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} MJ12bot|ia_archiver|LinkpadBot|MegaIndex|AhrefsBot|SemrushBot|opensiteexplorer
RewriteRule (.*) - [F,L]
Решил создать файл /home/admin/web/.htaccess с аналогичным содержимым, чтобы это правило работало для всех сайтов на сервере. Но почему то сайты перестают работать и возвращают ошибку 500. Что не так делаю?

Re: .htaccess в директорию /home/admin/web/

Posted: Tue Oct 29, 2019 7:41 pm
by yariksat
Это надо положить в корневой папке всех сайтов.

Re: .htaccess в директорию /home/admin/web/

Posted: Tue Oct 29, 2019 10:46 pm
by ruport
yariksat wrote:
Tue Oct 29, 2019 7:41 pm
Это надо положить в корневой папке всех сайтов.
положил .htaccess в корень всех сайтов с содержимым выше - получаю ошибку 500 для всех сайтов.

Re: .htaccess в директорию /home/admin/web/

Posted: Wed Oct 30, 2019 12:18 am
by grayfolk
Так а в логах апача-то что?

Re: .htaccess в директорию /home/admin/web/

Posted: Wed Oct 30, 2019 2:42 pm
by ruport
grayfolk wrote:
Wed Oct 30, 2019 12:18 am
Так а в логах апача-то что?
[Wed Oct 30 17:41:10.33384 2019] [core:alert] [pid 26349] [client .....] /home/admin/web/.htaccess: RewriteEngine not allowed here

Добавил в apach2.conf

Code: Select all

<Directory /home/admin/web/>
        AllowOverride All
</Directory>
Ошибка 500 не вылазит, но ограничения не работают. Я так понимаю следующий код в /home/admin/web/.htaccess

Code: Select all

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} MJ12bot|ia_archiver|LinkpadBot|MegaIndex|AhrefsBot|SemrushBot|opensiteexplorer
RewriteRule (.*) - [F,L]
не распространяется на вложенные каталоги, если в них есть свои, пусть даже пустые .htaccess, т.е. наследование htaccess не работает?

Re: .htaccess в директорию /home/admin/web/

Posted: Wed Oct 30, 2019 3:39 pm
by ruport
Нашел способ:
1) в apache2.conf прописываем :
<Directory /home/admin/web/>
AllowOverride All
</Directory>
2) в /home/admin/web/.htaccess прописываем :
RewriteOptions Inherit
RewriteCond %{HTTP_USER_AGENT} MJ12bot|ia_archiver|LinkpadBot|MegaIndex|AhrefsBot|SemrushBot|opensiteexplorer
RewriteRule (.*) - [F,L]
Вроде работает

Re: .htaccess в директорию /home/admin/web/

Posted: Wed Oct 30, 2019 3:49 pm
by grayfolk
ruport wrote:
Wed Oct 30, 2019 2:42 pm

[Wed Oct 30 17:41:10.33384 2019] [core:alert] [pid 26349] [client .....] /home/admin/web/.htaccess: RewriteEngine not allowed here
Как я понимаю, рерайт работает только в document root, выше - не работает.

Re: .htaccess в директорию /home/admin/web/

Posted: Mon Nov 04, 2019 5:34 am
by skurudo
Извините, что вмешиваюсь, но если у вас стандартная связка nginx + apache, то блокировку дешевле проводить на уровне nginx:

Code: Select all

if ($http_user_agent ~* (MJ12bot|ia_archiver|LinkpadBot|MegaIndex|AhrefsBot|SemrushBot|opensiteexplorer) ) {
    return 410;
}

Re: .htaccess в директорию /home/admin/web/

Posted: Tue Nov 05, 2019 8:00 pm
by ruport
skurudo wrote:
Mon Nov 04, 2019 5:34 am
Извините, что вмешиваюсь, но если у вас стандартная связка nginx + apache, то блокировку дешевле проводить на уровне nginx:

Code: Select all

if ($http_user_agent ~* (MJ12bot|ia_archiver|LinkpadBot|MegaIndex|AhrefsBot|SemrushBot|opensiteexplorer) ) {
    return 410;
}
Это в каком конфиге надо прописывать? Можете также привести пример, в котором вместо userAgent-ов перечислять нежелаемые IP-адреса, включая подсети в виде 123.123.123.1/24 ?