Назад | Перейти на главную страницу

Код .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 домен?

Является ли это возможным?

Чтобы разрешить 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 флаг это неявное И. Итак, выше указано, что если HTTP_REFERER не содержит allowed-domain.ua и содержит либо .ru или .uaи т. д., затем верните 403 Forbidden.

В 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]