Помогите сформировать регулярку для ЧПУ адресов

Имелась в виду обычная строка вроде uslugi-moyka-or-polirovka.
Т.е. сначала пробуем разобрать строку как диапазон и в случае неудачи разбираем как обычную остроку.
 
Имелась в виду обычная строка вроде uslugi-moyka-or-polirovka.
Т.е. сначала пробуем разобрать строку как диапазон и в случае неудачи разбираем как обычную остроку.

lag, подскажи, пожалуйста еще момент по .htaccess.
У меня есть такие УРЛы:
Код:
/firms/all/avtoservis/tokarnye-raboty/protochka/f_type-avtoservis/f_autobrands-vaz-or-bmw/f_salepaint-1/page-2.html
/firms/all/avtoservis/tokarnye-raboty/f_type-avtoservis/f_autobrands-vaz-or-bmw/f_salepaint-1/page-2.html
/firms/all/avtoservis/f_type-avtoservis/f_autobrands-vaz-or-bmw/f_salepaint-1/page-2.html
/firms/all/f_type-avtoservis/f_autobrands-vaz-or-bmw/f_salepaint-1/page-2.html
/firms/all/f_type-avtoservis/f_autobrands-vaz-or-bmw/f_salepaint-1/
/firms/all/avtoservis/page-4.html
/firms/

Структура урлов такая: модуль/город/типфирмы/категория/подкатегория/далеепараметрыфильтров/
В этих вариантах убавляется категория и тип, т.к. они не всегда есть. Но тип есть всегда, если есть категория. Подкатегории неограничены. Но, как правило, более 3 уровней не будет.

Написал я для первого варианта:
Код:
RewriteRule ^firms/([^/]+)/([^/]*)/([^/]*)/([^/]*)/((f_[a-z0-9-_]/)*)$ index.php?do=firms&areaname=$1&typef=$2&catname=$4&param=$5 [L]

Ерунда какая-то выходит:
PHP:
Array
(
    [do] => firms
    [areaname] => all/avtoservis/tokarnye-raboty/protochka/f_type-avtoservis/f_autobrands-vaz-or-bmw
    [typef] => f_salepaint-1
    [catname] => f_price-to-2700
)

Я к параметрам добавил знак "f_". Не знаю, может и не нужно. Может быть где-то еще чего добавить для распознавания?

P.s. сейчас у меня старое ЧПУ без фильтров работает. Но стал добавлять функционал с фильтрами, ЧПУ не пашет (не знаю как описать это дело).
Выглядит это страшно дело так:
Код:
RewriteRule ^firms/(.+)/(.+)/(.*)/(.*)/(.*)/$ index.php?do=firms&areaname=$1&typef=$2&catname=$5 [L]
RewriteRule ^firms/(.+)/(.+)/(.*)/(.*)/(.*)/page-([0-9]).html$ index.php?do=firms&areaname=$1&catname=$5&page=$6 [L]

RewriteRule ^firms/(.+)/(.+)/(.*)/(.*)/$ index.php?do=firms&areaname=$1&typef=$2&catname=$3 [L]
RewriteRule ^firms/(.+)/(.+)/(.*)/(.*)/page-([0-9]).html$ index.php?do=firms&areaname=$1&typef=$2&catname=$4&page=$5 [L]


RewriteRule ^firms/(.+)/(.+)/(.*)/$ index.php?do=firms&areaname=$1&typef=$2&catname=$4 [L]
RewriteRule ^firms/(.+)/(.+)/(.*)/page-([0-9]).html$ index.php?do=firms&areaname=$1&typef=$2&catname=$4&page=$4 [L]

RewriteRule ^firms/(.+)/(.*)/$ index.php?do=firms&areaname=$1&typef=$2 [L]
RewriteRule ^firms/(.+)/(.*)/page-([0-9]).html$ index.php?do=firms&areaname=$1&typef=$2&page=$3 [L]
 
Последнее редактирование:
В конструкции f_[a-z0-9-_] не хватает квантификатора + т.е. так f_[a-z0-9-_]+
 
Назад
Сверху