ЧПУ - директива на несколько файлов

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

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

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    Прошу помощи в вопросе, в котором сам я абсолютный новичек.
    В общем решил сделать на сайте ЧПУ, прописал несколько директив через mod_rewrite и наткнулся на одну проблему.
    У меня есть необходимость создать что-то подобное:

    RewriteRule ^objects/([A-z0-9-]+)(/?)+$ objects/index.php?mode=region&region=$1 [L]
    RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)(/?)+$ objects/index.php?mode=city&region=$1&city=$2 [L]
    RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)(/?)+$ objects/view.php?mode=outside&region=$1&city=$2&type=$3 [L]

    И плюс к этому далее мне хотелось бы преобразовывать ссылку вида
    ^objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)(/?)+$ к userpart/index.php?altname=$1

    Пожалуйста, подскажите, как лучше всего решить такую проблему, желательно без изменения функционала файлов. Всем откликнувшимся спасибо.
     
    citrus нравится это.
  2. citrus

    citrus Постоялец

    Регистр.:
    5 ноя 2006
    Сообщения:
    58
    Симпатии:
    8
    как-то непонятно, на какую проблему ты наткнулся ? напиши четко, что-ты сделал, что у тебя не работает из сделанного, чего бы ты хотел еще сделать.
     
  3. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    Сделал вот это:

    RewriteRule ^objects/([A-z0-9-]+)(/?)+$ objects/index.php?mode=region&region=$1 [L]
    RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)(/?)+$ objects/index.php?mode=city&region=$1&city=$2 [L]

    Работает!
    Дальше хочу сделать ссылку вида /objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/ и чтобы вела она не на файл objects/index.php как в предыдущих директивах, а на файл objects/view.php с параметрами mode=outside&region=$1&city=$2&type=$3.

    Сделал так:

    RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)(/?)+$ objects/view.php?mode=outside&region=$1&city=$2&type=$3 [L]

    Не работает, не знаю почему, я не силен в mod_rewrite, поэтому предположил, что не работает из-за того, что ссылки ведут на разные файлы.
    Да и дальше бы хотел преобразовывать ссылку вида
    /objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/
    к userpart/index.php?altname=$1 причем, чтобы altname бралась из последней переменной.

    Пример:
     
  4. EnGeLs

    EnGeLs Постоялец

    Регистр.:
    30 апр 2008
    Сообщения:
    87
    Симпатии:
    21
    Если недо чтобы бралось из последней переменной, то и указывать надо последнюю переменную, то есть не $1 а $4? т.е. userpart/index.php?altname=$4
     
    askarbin нравится это.
  5. citrus

    citrus Постоялец

    Регистр.:
    5 ноя 2006
    Сообщения:
    58
    Симпатии:
    8
    RewriteEngine On
    RewriteRule ^objects/([A-z0-9-]+)/?$ objects/index.php?mode=region&region=$1 [L]
    RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)/?$ objects/index.php?mode=city&region=$1&city=$2 [L]

    RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/?$ objects/view.php?mode=outside&region=$1&city=$2&type=$3 [L]
    RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/?$ userpart/index.php?altname=$4 [L]

    потестил на примерах:
    http://test1.ru/objects/Aa12/
    http://test1.ru/objects/Aa12/Bb23/
    http://test1.ru/objects/Aa12/Bb23/Cc34/
    http://test1.ru/objects/Aa12/Bb23/Cc34/name1/

    всё работает
     
    askarbin нравится это.
  6. askarbin

    askarbin

    Регистр.:
    31 мар 2009
    Сообщения:
    293
    Симпатии:
    36
    Да, на самом деле все работает, на сервере какие-то неполадки возникли, видимо, теперь тестирую - все ок. Спасибо, всем кто откликнулся.
     
Статус темы:
Закрыта.