Проблема с ревритом

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем lEx0_kz, 13 мар 2010.

Статус темы:
Закрыта.
  1. lEx0_kz

    lEx0_kz Постоялец

    Регистр.:
    3 авг 2009
    Сообщения:
    62
    Симпатии:
    26
    Так сперва мой реврит6
    PHP:
    <IfModule mod_rewrite.c>
        
    RewriteEngine On

        RewriteBase 
    /
        
    #RewriteRule ^tracker/(.*) index.php?do=/blog/$1
        #RewriteRule ^tracker(.*) index.php?do=/blog/$1
        
        
    RewriteRule ^(.*/?)tracker/(.*) index.php?do=/$1blog/$2
        RewriteRule 
    ^(.*/?)tracker(.*) index.php?do=/$1blog/$2
        
        RewriteCond 
    %{REQUEST_FILENAME} !-f
        RewriteCond 
    %{REQUEST_FILENAME} !-d
        RewriteRule 
    ^(.*) index.php?do=/$1

    </IfModule>
    Суть проблемы что при редиректе
    http://blabla.kz/Code5/tracker

    Все работает
    а при
    http://blabla.kz/Code5/tracker/
    уже нет. (ссылается из ЦМС в http://blabla.kz/Code5/blog/)

    И не пашут конструкции в виде http://blabla.kz/Code5/tracker/Testoviy-blabla
    (ссылается из ЦМС в http://blabla.kz/Code5/tracker/Testoviy-blabla)

    Помогите исправить

    PS.
    Пробовал писать
    PHP:
    RewriteRule ^Code5/tracker(.*) index.php?do=/Code5/blog/$1
    тогда работает все и норм открывает страницу
    http://blabla.kz/Code5/tracker/Testoviy-blabla
    и
    http://blabla.kz/Code5/tracker/
     
  2. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    PHP:
        RewriteRule ^(.*/?)tracker/(.*) index.php?do=/$1blog/$2
        RewriteRule 
    ^(.*/?)tracker(.*) index.php?do=/$1blog/$
    У тебя первый (.*/?) съедает всю строку. Попробуй его ограничить. Надо выкинуть как-то оттуда /
    Например, так:
    PHP:
    ^([0-9A-Za-z._-]+)/tracker/(.*)$  index.php?do=/$1/blog/$
    Но тогда конструкции вида /../../tracker/.. сюда не попадут.
    А если сделать для них правило, то оно съест и /../tracker/..
    (т.к. это как раз и будет считаться 2 слова через слеш).

    Короче или начинай ссылки с /tracker, чтоб они однозначно идентифицировались по ^, или заканчивай на tracker, чтоб идентифицировались по $, или, раз уж вставляешь /tracker/ в середину, делай чтоб начало или конец никогда ни при каких обстоятельствах не подпадало под это же правило. Сейчас у тебя "большие-маленькие буквы или цифры или точка или подчеркивание или минус или слеш" замечательно съедает строку /tracker/. Сделай чтоб этого не было.

    Типа, в штуке до или после /tracker/ гарантировано не должно быть слешей.
     
  3. lEx0_kz

    lEx0_kz Постоялец

    Регистр.:
    3 авг 2009
    Сообщения:
    62
    Симпатии:
    26
    Круто пашет:ay:

    Добавлено через 2 минуты
    есть какой нить учебник с примерами как работать с rewrite?

    я придумываю сам эти правила и они иногда не пашут, а почитать что да как не с чего:nezn:
     
  4. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    lEx0_kz нравится это.
Статус темы:
Закрыта.