Код .htaccess для блокировки всех доменов .ua, но внесения в белый список определенного домена

Я блокирую некоторые источники спама, используя следующий код .htaccess :

RewriteCond %{HTTP_REFERER} \.ru$ [NC,OR]
RewriteCond %{HTTP_REFERER} \.ru/ [NC,OR]
RewriteCond %{HTTP_REFERER} \.ua$ [NC,OR]
RewriteCond %{HTTP_REFERER} \.ua/ [NC,OR]
RewriteCond %{HTTP_REFERER} hol\.es [NC,OR]
RewriteCond %{HTTP_REFERER} hys\.cz [NC,OR]
A few more similar lines
RewriteCond %{HTTP_REFERER} slinqs\.com [NC]
RewriteRule ^(.*)$ - [F,L]

Как видите, я заблокировал все .ru и все .ua с использованием кода.

Проблема в том, что теперь я хочу разрешить определенному домену .ua отправлять трафик на мой веб-сайт.

Как я могу добавить этот домен в белый список .ua домен?

Возможно ли?

2
задан 6 September 2017 в 14:44
1 ответ

Чтобы разрешить allowed-domain.com вы можете сделать что-то вроде следующего:

RewriteCond %{HTTP_REFERER} !allowed-domain\.ua
RewriteCond %{HTTP_REFERER} \.ru$ [NC,OR]
RewriteCond %{HTTP_REFERER} \.ru/ [NC,OR]
RewriteCond %{HTTP_REFERER} \.ua$ [NC,OR]
RewriteCond %{HTTP_REFERER} \.ua/ [NC,OR]
RewriteCond %{HTTP_REFERER} hol\.es [NC,OR]
RewriteCond %{HTTP_REFERER} hys\.cz [NC,OR]
# A few more similar lines
RewriteCond %{HTTP_REFERER} slinqs\.com [NC]
RewriteRule ^ - [F]

Префикс ! отменяет регулярное выражение и без флага OR является неявным AND. Таким образом, в приведенном выше сообщении говорится, что если HTTP_REFERER не содержит allowed-domain.ua и содержит либо .ru , либо .ua и т. Д., Тогда возвращается 403 Запрещено.

Флаг L не требуется при использовании флага F (подразумевается). Кроме того, вам не нужен подшаблон захвата (например, (. *) ), поскольку вы его не используете.

 RewriteCond% {HTTP_REFERER} \ .ru $ [NC, OR]
RewriteCond% {HTTP_REFERER} \ .ru / [NC, OR]
 

Обратите внимание, что это то же самое, что (с использованием чередования):

RewriteCond %{HTTP_REFERER} \.ru(/|$) [NC,OR]
 RewriteCond% {HTTP_REFERER} \ .ru $ [NC, OR]
RewriteCond% {HTTP_REFERER} \ .ru / [NC, OR]
RewriteCond% {HTTP_REFERER} \ .ua $ [NC, OR]
RewriteCond% {HTTP_REFERER} \ .ua / [NC, OR]
 

То же самое, что:

RewriteCond %{HTTP_REFERER} \.(ru|ua)(/|$) [NC,OR]
2
ответ дан 3 December 2019 в 11:27

Теги

Похожие вопросы