parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Пардон за оффтоп - regexp в mod_rewrite не соображу...

Webnode 20.04.2011 17:47 / 20.04.2011 17:47

Добрый день!

Проблема такая - привожу URL-ы к новому красивому виду, написал очередной внешний редиректор для RewriteMap, и он даже работает, да вот что-то правила в .htaccess только по одному работают..

Редиректор выдаёт готовую строку вида ?cat=1&subcat=2$page=3, на вход его кормлю полями разделёнными '~'

Логика такая (что хочу видеть как новый URL):
/catalog/ - это все товары.
/catalog/2 - это все товары, страница 2
/catalog/tv - это товары раздела tv, все.
/catalog/tv/3 - это товары раздела tv, страница 3.
/catalog/tv/lcd - это товары раздела tv, подраздел lcd.
/catalog/tv/lcd/4 - это товары раздела tv, подраздел lcd, страница 4.

Название разделов и подразделов могут содержать '-' как часть имени
страницы - только цифры. Может (или не может) быть конечный слэш '/'

.htaccess что лежит в /catalog :
RewriteEngine On

# parent category and sub cat of catalog - with page
RewriteRule ^([\w-]+)/([\w-]+)/(\d+)/?$ - [e=perm_name:$1~$2~$3]
RewriteRule ^(.*)$  /oldver/catalog.phtml${catalog_static_url:%{ENV:perm_name}} [L]

# parent category and sub cat of catalog - without page
RewriteRule ^([\w-]+)/([\w-]+)/?$ - [e=perm_name:$1~$2~]
RewriteRule ^(.*)$  /oldver/catalog.phtml${catalog_static_url:%{ENV:perm_name}} [L]

# parent category  of catalog - with page
RewriteRule ^([\w-]+)/(\d+)/?$ - [e=perm_name:$1~~$2]
RewriteRule ^(.*)$  /oldver/catalog.phtml${catalog_static_url:%{ENV:perm_name}} [L]

# parent category  of catalog - without page
RewriteRule ^([\w-]+)/?$ - [e=perm_name:$1~~]
RewriteRule ^(.*)$  /oldver/catalog.phtml${catalog_static_url:%{ENV:perm_name}} [L]

# just root of catalog - with page
RewriteRule ^(\d+)/?$  /oldver/catalog.phtml?pg=$1 [L]

# just root of catalog
RewriteRule ^$  /oldver/catalog.phtml [L]
Пробовал:
- Менять местами правила
- Заменять \d на [0-9], \w на [a-z] и прочее шаманство
- Ставить флаг s=100 рядом с L, типа, явно закончить.
- Написал на perl прогу - ко всем url применяю шаблоны, U*P получилось, "выстрелы" только в правильном месте были, чотко! :)

Подскажите, что не так?
Какие тонкости у этого ... модуля?
Заранее спасибо!