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

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

  1. yuazakharov

    yuazakharov

    Регистр.:
    22 янв 2013
    Сообщения:
    215
    Симпатии:
    91
    День добрый! 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
    Сообщения:
    188
    Симпатии:
    227
    %{ENV:variable}
    Код:
    RewriteCond %{ENV:REDIR} redir
    
    А директива RewriteMap работает только в контексте server config и virtual host. Так что для её использования нужен доступ к httpd.conf
    http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritemap
     
    yuazakharov нравится это.
  3. yuazakharov

    yuazakharov

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

    yuazakharov

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


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

    lag

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

    yuazakharov

    Регистр.:
    22 янв 2013
    Сообщения:
    215
    Симпатии:
    91
    На этом адресе http://yuazakharov.ru/ogranichenie.html
    1.jpg
     
  7. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    188
    Симпатии:
    227
    Т.е. редирект работает, но происходит бесконечная переадресация. Значит нужно сделать исключение для страницы /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
    Сообщения:
    215
    Симпатии:
    91
    Теперь работает ) Благодарю!
    Такое "217.118.64.55 - 220.120.20.20" будет работать?
     
  9. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    188
    Симпатии:
    227
    Директива 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
    Сообщения:
    215
    Симпатии:
    91
    А если так: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