Помогите с GET и mod_rewrite

GDiV

Новичок
Помогите с GET и mod_rewrite

Не посылайте меня в поиск, был, просмотрел все, но решение своей проблемы не нашел.

Существует: http://site/catalogue/?catalogid=3&folderid=55

Нужно получить: http://site/?url=catalogue&catalogid=3&folderid=55

Все попытки передать остальные переменные были безуспешны. Знающий народ, помогите.
 

GDiV

Новичок
PHP FAQ: Ссылки на полезные ресурсы. ЧПУ, mod_rewrite
QSA
По этому линку все просмотрел, так конкретного решения и не нашел. Может чего-то я недопонял...
Может кто-то может конкретное решение предложить? Буду оч. признателен.
 

GDiV

Новичок
Интересно, почему я наугад пошёл по последней приведённой там ссылке и таки нашёл там QSA?
Только тормозом меня называть не надо! Просто ни разу с этой функцией не сталкивался, помоги разобраться. :)

Вот что я нашел:
'qsappend|QSA' (добавлять строку запроса) Этот флаг указывает механизму преобразований на добавление а не замену, строки запроса из URL к существующей, в строке подстановки. Используйте это когда вы хотите добавлять дополнительные данные в строку запроса с помощью директив преобразований.

Как правильно прописать?:
RewriteRule ^([^/]+)/?([^/|.]*) /index.php?url=&% [QSA]
Так?
 

SiMM

Новичок
> Так?
А почему бы не взять и попробовать? И зачем там url=&% ?
Ссылки на карманы обозначаются как $1 и $2
 

GDiV

Новичок
А почему бы не взять и попробовать? И зачем там url=&% ?
Ссылки на карманы обозначаются как $1 и $2
Спасибо, разобрался.

Заработал такой скрипт:
RewriteEngine On
RewriteRule ^([^/|.]+)/?([^/|.]*)$ /index.php?url=$1&$2 [QSA]

Для тех кто обратиться к форуму с такой же проблемой, объясняю:
Пример http//site/catalog/?folderid=1&catalogid=2
Первая переменная берет текст до символов /? в моем примере catalog, вторая переменная берет оставшуюся часть. В итоге получил /index.php?url=catalog&folderid=1&catalogid=2

Все проще чем кажеться неопытным вглядом. Тупить меньше надо, вникать, и не бросать все на полпути при ошибках :)

Всем успехов! :)
 

SiMM

Новичок
> вторая переменная берет оставшуюся часть
Это заблуждение.
mod_rewrite не работает с query (в терминах [m]parse_url[/m]), а то правило, что ты написал, трактуется так:
^ - с начала строки
([^/|.]+) - от одного и более любых символов, кроме /, | (чем этот символ не угодил - не знаю - оставим на совести автора) и .
/? - далее в path может быть не более одного символа / (т.е. от нуля, его может и не быть)
([^/|.]*) - далее идёт от нуля и более любых символов, кроме /, | и .
$ - конец строки.
То правило, которое вы привели, должно выглядеть так:
RewriteRule ^([^/]+)/$ /index.php?url=$1 [L,QSA]
Вобщем, читайте ФАКи по ЧПУ и регулярным выражениям
 

GDiV

Новичок
SiMM, вот теперь Вам все скажут спасибо за объяснение, так бы сразу!
Я знал что вы не оставите мой комментарий без внимания! :)
 

SiMM

Новичок
Только я сам там ошибся. Забыл в правиле кармашек организовать ;) Исправил.
 
Сверху