.htaccess código para bloquear todos os domínios .ua mas colocar na lista de permissões um domínio específico

2

Estou bloqueando alguns referenciadores de spam usando o seguinte código .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]

Como você pode ver, eu bloqueei todos os .ru e todos os .ua domínios usando o código.

O problema agora é permitir que um determinado domínio .ua envie tráfego para o meu site.

Como posso colocar na lista de permissões um domínio .ua ?

É possível?

    
por TSA 06.09.2017 / 12:47

1 resposta

2

Para permitir allowed-domain.com , você pode fazer algo como o seguinte:

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]

O prefixo ! nega o regex e sem o sinal OR é um AND implícito. Portanto, o acima afirma que, se o HTTP_REFERER não contiver allowed-domain.ua e contiver .ru ou .ua , etc., retorne um 403 Proibido.

O sinalizador L não é necessário ao usar o sinalizador F (está implícito). Além disso, você não precisa de um subpadrão de captura (por exemplo, (.*) ) - já que você não o está usando.

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

Observe que isso é o mesmo que (usando alternância):

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]

E isso é o mesmo que:

RewriteCond %{HTTP_REFERER} \.(ru|ua)(/|$) [NC,OR]
    
por 06.09.2017 / 13:24