Переадресация в htaccess по ip адресам

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем yuazakharov, 23 окт 2015.

  1. yuazakharov

    yuazakharov

    Регистр.:
    22 янв 2013
    Сообщения:
    291
    Симпатии:
    135
    День добрый! PrestaShop 1.6.1 Пытаюсь переадресовать вошедших с ip адресов на html страницу:

    SetEnvIf REMOTE_ADDR 46.48.144.115 REDIR="redir"
    RewriteCond %{REDIR} redir
    RewriteRule .* /ogranichenie.html [R,L]

    Rewritemap ip txt:/blacklist.txt
    RewriteCond ${ip:%{REMOTE_ADDR}} =b
    RewriteRule ^(.*)$ /ogranichenie.html[L]


    Что-то не работает.
    Содержимое blacklist.txt: 46.48.144.115 b

    Хочу чтоб заходили только с 1-го региона.
     
  2. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    207
    Симпатии:
    266
    %{ENV:variable}
    Код:
    RewriteCond %{ENV:REDIR} redir
    
    А директива RewriteMap работает только в контексте server config и virtual host. Так что для её использования нужен доступ к httpd.conf
    Перейти по ссылке
     
    yuazakharov нравится это.
  3. yuazakharov

    yuazakharov

    Регистр.:
    22 янв 2013
    Сообщения:
    291
    Симпатии:
    135
    Может по-проще что-то есть?
     
  4. yuazakharov

    yuazakharov

    Регистр.:
    22 янв 2013
    Сообщения:
    291
    Симпатии:
    135
    SetEnvIf REMOTE_ADDR 217.118.64.55 REDIR="redir"
    RewriteCond %{ENV:REDIR} redir
    RewriteRule .* /ogranichenie.html [R,L]


    Не работает почему-то
     
  5. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    207
    Симпатии:
    266
    Проблема может быть если поставили их не в самое начало, а после других правил. Например после RewriteRule .* index.php [L]
     
    yuazakharov нравится это.
  6. yuazakharov

    yuazakharov

    Регистр.:
    22 янв 2013
    Сообщения:
    291
    Симпатии:
    135
    На этом адресе Перейти по ссылке
    1.jpg
     
  7. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    207
    Симпатии:
    266
    Т.е. редирект работает, но происходит бесконечная переадресация. Значит нужно сделать исключение для страницы /ogranichenie.html
    Код:
    SetEnvIf REMOTE_ADDR 217.118.64.55 REDIR="redir"
    
    RewriteCond %{ENV:REDIR} redir
    RewriteCond %{REQUEST_URI} !^/ogranichenie.html
    RewriteRule .* /ogranichenie.html [R,L]
    
     
    yuazakharov нравится это.
  8. yuazakharov

    yuazakharov

    Регистр.:
    22 янв 2013
    Сообщения:
    291
    Симпатии:
    135
    Теперь работает ) Благодарю!
    Такое "217.118.64.55 - 220.120.20.20" будет работать?
     
  9. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    207
    Симпатии:
    266
    Директива SetEnvIf поддерживает регулярные выражения, но в данном случае думаю удобнее будет использовать RewriteCond.
    Код:
    RewriteCond %{REMOTE_ADDR} >217.118.64.54
    RewriteCond %{REMOTE_ADDR} <220.120.20.21
    RewriteCond %{REQUEST_URI} !^/ogranichenie.html
    RewriteRule .* /ogranichenie.html [R,L]
    
     
    yuazakharov нравится это.
  10. yuazakharov

    yuazakharov

    Регистр.:
    22 янв 2013
    Сообщения:
    291
    Симпатии:
    135
    А если так:217.118.64.55 - 220.120.20.20, 117.118.64.55 - 119.120.20.20, ...
    то могу бесконечно такие ставить?
    RewriteCond %{REMOTE_ADDR} >217.118.64.54
    RewriteCond %{REMOTE_ADDR} <220.120.20.21