Регулярные Выражения В Rewriterule

retsech

New Member
23.01.2014
1
0
#1
Добрый день. Задался вопросом написать .htaccess, для реализации ЧПУ (человеко-понятных урлов)
Задача в следующем.

Необходимо разбить URL на части, зная, что они отделяются спец символами.
А именно, есть URL вида:
www.site.com/gallery/photo(145,312)[sepia,chb]'4-asc-title

нужно разбить его на параметры:
?page= всё что в начале до символов '()', '[]', 'одинарная кавычка', '-asc-' или '-desc-'
?id= всё что в круглых скобках
?tg= всё что в квадратных скобках
?num= всё что после кавычки
?sort=asc&by= всё что после -asc- или -desc-

Количество параметров и их место в URL'e может меняться, то есть, возможен такой урл:
www.site.com/gallery/photo'4[sepia,chb]

после двух дней шаманя с RewriteRule на локальной машине (и даже пару раз получая экран смерти) решил обратиться за помощью.

Вот, что имею:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([A-Za-z0-9-_/]+) ?page=$1 [QSA]
RewriteRule [']([A-Za-z0-9]+) ?num=$1 [QSA]
RewriteRule \(([A-Za-z0-9,]+)\) ?id=$1 [QSA]
RewriteRule \[([A-Za-z0-9,]+)\] ?tg=$1 [QSA]
RewriteRule -desc-([A-Za-z0-9]+) ?sort=desc&by=$1 [QSA]
RewriteRule -asc-([A-Za-z0-9]+) ?sort=asc&by=$1 [QSA]

Всё прекрасно работает со строкой вида, когда в переменную ?page= закидывается слэш, то есть с URL вида: site.com/gallery/photo(144)... всё парсится, а с site.com/gallery(145)... заполняется только переменная ?page и всё.

Помогите найти проблему, пожалуйста.