htaccess блокирование referer

Discussion in 'PHP' started by GAiN, 19 Dec 2014.

  1. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    помогите пожалуйста составить блок по бану реферера, с регуляркой
    в которой можно указать параметры встречаемые в url
    [A-Z0-9_-?=]
    а так же на любое рандомное содержание элемента в url
    забаненым отдавать ошибку 403
     
  2. lifescore

    lifescore Elder - Старейшина

    Joined:
    27 Aug 2011
    Messages:
    651
    Likes Received:
    511
    Reputations:
    72
    Для этого требуются следующие директивы .htaccess:
    PHP:
    RewriteEngine on
    # Options +FollowSymlinks # – раскомментировать, если при установке этого .htaccess появляется ошибка 500, Internal Server Error
    RewriteCond %{HTTP_REFERERhtaccess\.ru [NC]
    RewriteRule .* – [F]
    Или, если нужно перечислить больше одного сайта:
    PHP:
    RewriteEngine on
    # Options +FollowSymlinks # – раскомментировать, если при установке этого .htaccess появляется ошибка 500, Internal Server Error
    RewriteCond %{HTTP_REFERERhtaccess\.ru [NC,OR]
    RewriteCond %{HTTP_REFERERsitemap\.ru
    RewriteRule 
    .* – [F]
    Если нужно запретить доступ напрямую со всех хостов, кроме определенных, набор правил будет выглядеть примерно так:
    PHP:
    RewriteEngine On
    RewriteCond 
    %{HTTP_REFERER} !^http://(www.)?htaccess\.ru(/)?
    RewriteCond %{HTTP_REFERER} !^http://(.*)\.htaccess\.ru(/)?
    RewriteRule .*\.(gif|jpg|jpeg|png)$ – [F]
     
    1 person likes this.
  3. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    а как блокировать определённые url ?

    пробую заблокировать такой:
    http://sitename.ru/yandsearch?text=downloding&lr=213
    вместо http://sitename.ru/ может быть любой адрес

    при этом sitename.ru блокировать не надо, только часть найденую в реферер http://любой адрес.ru/yandsearch?text=downloding&lr=213

    жёлтым выделен запрос - он стабильный и одинаковый
    а красным - рандомный - он меняется часто
    по этим параметрам надо блокировать
    http://sitename.ru/ - не должен влиять, вместо него может любой адрес быть, только по маске найденой в реферер yandsearch?text=downloding&lr=213

    в результате должно блокироваться http://sitename.ru/yandsearch?text=тут любое значение - блок - если вместо sitename вставить другой url то блокироваться тоже должен и такой вариант

    у меня ошибка 500 идёт, когда пытаюсь заблокировать для url указанного выше