[Регулярки & Mod_Rewrite] Задай вопрос, получи ответ.

Discussion in 'PHP' started by .:EnoT:., 19 Nov 2008.

Thread Status:
Not open for further replies.
  1. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    как это сделать лучше ?

    сделал так: RewriteCond %{HTTP_USER_AGENT} .*Opera/9.80 (Windows NT 6.1; WOW64; MRA 5.9 (build 4953)) Presto/2.12.388 Version/12.14.*
    но после этого вообще нельзя на сайт зайти с любого браузера - ошибка 500
     
    #1961 GAiN, 8 May 2013
    Last edited: 8 May 2013
  2. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    PHP:
    $u $_SERVER['HTTP_USER_AGENT'];
    if( 
    $u == "Opera/9.80 (Windows NT 6.1; WOW64; MRA 5.9 (build 4953)) Presto/2.12.388 Version/12.14" )  {
    echo 
    "Доступ закрыт";
    exit();
    }
     
    1 person likes this.
  3. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    qaz и после указания такого кода ошибка 500 идёт почему то
     
  4. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    потому что это php код, его не надо в .htaccess пихать
     
  5. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    Спасибо, вариант с блокировкой в файлах php тоже работает, я просто хотел сделать в htaccess это
    но всё равно благодарен !
     
  6. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    Как составить регулярку, чтобы урл выцеплять из такой конструкции ?

    пытался так
    PHP:
    preg_match_all('@<p><strong><a.*href=\'(.*?)\'>@s'$page$list);

    Но выцепляет почему-то
    Почему так? Ведь я указываю нежадный квантификатор
    Должен останавливаться по идее после первого вхождения символа.
     
  7. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
  8. Mykola-bas

    Mykola-bas New Member

    Joined:
    24 Apr 2008
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Думаю сюда.
    Как определить японские иероглифьі?
    Тоесть нужно сделать проверку: кирилица и латиница - делаем одно, иероглифьі - другое.
     
  9. Gelo

    Gelo New Member

    Joined:
    4 May 2013
    Messages:
    42
    Likes Received:
    2
    Reputations:
    1
    кодировки посмотри
     
  10. Mykola-bas

    Mykola-bas New Member

    Joined:
    24 Apr 2008
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    if(isset($_GET['q']) and ($_GET['q']) != ''){
    echo mb_detect_encoding($str);
    ..............................................................
    где q равно NANA -ナナ-
    Вьіводит ASCII.

    Хотя
    $str = 'NANA -ナナ-';
    echo mb_detect_encoding($str);
    UTF-8

    как разобрать?
     
  11. Gelo

    Gelo New Member

    Joined:
    4 May 2013
    Messages:
    42
    Likes Received:
    2
    Reputations:
    1
    так. хм. а если по аски кодам определять?
     
  12. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    Короче не могу понять чего не происходит изменение адресной строки, допустим есть страница с id=132 мне нужно перенаправиь такую страницу в гугл

    побовал даже так
    PHP:
    RewriteEngine on 
    RewriteRule 
    ^index.php?id=132http://www.google.com.ua/ [L]
    и ничего не происсходит, почему? как правильно?
     
  13. wkar

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

    Joined:
    18 Oct 2009
    Messages:
    211
    Likes Received:
    67
    Reputations:
    34
    2qaz
    Code:
    RewriteEngine on 
    RewriteCond %{QUERY_STRING} ^id=132$
    RewriteRule ^index.php https://www.google.com.ua/? [L]
     
    #1973 wkar, 27 May 2013
    Last edited: 27 May 2013
    1 person likes this.
  14. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    в robots txt у меня на закрытом сайте стоит
    User-Agent: *
    Disallow: /
    закрыто для всех поисковиков, но некоторые поисковики всё же проиндексировали то что им было запрещено, а именно bing поисковик.
    как заблокировать bing в htaccess ?
    а также не помешает заблокировать yahoo - и вообще если возможно то каждый поисковик, а то ссылки то не должны появлятся
    а также как можно сделать если по этим ссылкам из поисковика перешли - то перенаправить перешедших куда подальше на другие сайты ?
     
    #1974 GAiN, 28 May 2013
    Last edited: 28 May 2013
  15. cat1vo

    cat1vo Level 8

    Joined:
    12 Aug 2009
    Messages:
    375
    Likes Received:
    343
    Reputations:
    99
    Всех поисковых ботов Вы не заблокируете, уж поверьте, там и IP адреса меняются и в UA не всегда они пишут кто они.
    А из поисковика отсеивать легко, делайте проверку по referrer и если там буду встречаться названия ваших поисковиков, шлите их куда хотите.
     
    1 person likes this.
  16. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    реализовал так:
    PHP:
    Options All

    SetEnvIfNoCase Referer 
    "^http://([a-z0-9-]+.)?bing.com.*$" bad_site

    SetEnvIfNoCase Referer 
    "^http://([a-z0-9-]+.)?bing.com.*$" bad_site


    Order Allow
    ,Deny

    Allow from all

    Deny from env
    =bad_site
    после перехода пользователь видит пустую белую страницу
     
  17. preno

    preno Member

    Joined:
    5 Sep 2010
    Messages:
    249
    Likes Received:
    6
    Reputations:
    0
    Помогите составить регулярку на php, которая дергает из логов веб сервера апач все айпи адреса которые заходили на /admin/
    То есть, в переменной $log скажем содержится лог апача, теперь нам надо вывести все айпи адреса в логах которых есть строка /admin/
    Напоминаю, логии апача выглядят так:

    Code:
    31.17.64.24 - - [04/Jun/2013:00:05:04 +0300] "GET /content/0613/20652_25.jpg HTTP/1.1" 200 245968
    125.84.46.22 - - [04/Jun/2013:00:05:04 +0300] "GET /content/0613/20652_18.jpg HTTP/1.1" 200 289951
    33.22.33.44 - - [04/Jun/2013:00:05:06 +0300] "GET /admin/login.php HTTP/1.1" 200 252248 
    Очень поможете.
     
    #1977 preno, 5 Jun 2013
    Last edited: 5 Jun 2013
  18. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    preg_match_all("#[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}#",$for_log,$result);
     
  19. preno

    preno Member

    Joined:
    5 Sep 2010
    Messages:
    249
    Likes Received:
    6
    Reputations:
    0
    это не то, что требовалось. Данная регулярка дергает все айпи из логов,а не где есть /admin/ !
     
  20. wkar

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

    Joined:
    18 Oct 2009
    Messages:
    211
    Likes Received:
    67
    Reputations:
    34
    #([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*/admin/#
     
Thread Status:
Not open for further replies.