Как преобразовать ссылки с помощью Mod_Rewrite

Тема в разделе "Регулярные выражения", создана пользователем sympler, 16 май 2010.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. sympler

    sympler Постоялец

    Регистр.:
    24 окт 2008
    Сообщения:
    131
    Симпатии:
    6
    уже второй день бьюсь над преобразованием ссылок с помощью Mod_rewrite, один тип сделаю, так второй сбивается ((((

    в общем типов всего восемь, все что написано кириллицей (русскими) - это переменные, английскими - постоянные (включая спецсимволы), если будет непонятно - распишу подробнее:

    Для первой, второй и третьей строки я уже написал хотя думаю что неправильно, поправьте если вдруг:

    /страница.html -> RewriteRule ^([a-zA-Z0-9_-]*)?\.html$ index.php?page=$1

    /запрос1.страница.html -> RewriteRule ^([a-zA-Z0-9_-]*)\.([a-zA-Z0-9_-]*)?\.html$ index.php?page=$2&act1=$1

    /запрос1.запрос2.страница.html -> ???

    /запрос1.запрос2.запрос3.страница.html -> ???

    /категория/страница.html -> RewriteRule ^([a-zA-Z0-9_-]*)?\/([a-zA-Z0-9_-]*)?\.html$ index.php?page=$2&category=$1
    /категория/запрос1.страница.html -> ??
    /категория/запрос1.запрос2.страница.html -> ??
    /категория/запрос1.запрос2.запрос3.страница.html -> ??

    неужели не понятно? может кто моможет?
     
  2. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Код:
    RewriteEngine On
    RewriteRule ^([^/]*)\.html$ /index.php?page=$1 [L]
    RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?page=$2&act1=$1 [L]
    Дальше Урлы нужны.
     
    sympler нравится это.
  3. sympler

    sympler Постоялец

    Регистр.:
    24 окт 2008
    Сообщения:
    131
    Симпатии:
    6
    и на этом спасибо, хотя регулярка типа ([^/]*) не подходит, нужно чтобы только латиница, тире и подчеркивание
    распишу подробнее виды ссылок:
    1. /страница.html -> index.php?page=страница
    2. /запрос1.страница.html -> index.php?page=страница&act1=запрос1
    3. /запрос1.запрос2.страница.html -> index.php?page=страница&act1=запрос1 &act2=запрос2
    4. /запрос1.запрос2.запрос3.страница.html -> index.php?page=страница&act1=запрос1 &act2=запрос2 &act3=запрос3

    для начала хотябы эти
     
  4. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    ([^/]*) замени на ([a-ZA-Z\-_]*)
     
  5. baltazorg

    baltazorg

    Регистр.:
    7 авг 2008
    Сообщения:
    203
    Симпатии:
    71
    Подскажите кто знает, есть урл вида site.com/?query=goods&size=XL
    удалось привести его к виду site.com/goods/size:XL с помощью правила:
    Код:
    RewriteRule ^([^/]*)/size:([^/]*)$ ?query=$1&size=$2 [L]
    Но теперь столкнулся с проблемой, не получается разрулить вот такой урл: site.com/?query=goods&size=L/XL, вот такая ошибка выскакивает: The requested URL /goods/size:L/XL years was not found on this server.
    Видимо надо как-то регулярку иначе составлять, но как - не знаю, пользовался этим сервисом генерации модреврайта: www.generateit.net/mod-rewrite/
     
  6. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    Код:
    RewriteRule ^([^/]*)/size:([^\n]*)$ ?query=$1&size=$2 [L]
    
     
    baltazorg нравится это.
Статус темы:
Закрыта.