Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Mod rewrite - очередная задачка
цитата
05/06/10 в 02:44
 Vyacheslav
Хочу заменять по следующим правилам

http://www.domain.com/script.php?param1=value1&param2=value2&param3=value3
при наборе
http://www.domain.com/value3/

а

http://www.domain.com/script.php?param1=value1&param2=value2&param3=value3+subvalue1
при наборе
http://www.domain.com/value3-subvalue1/

С первым думаю что-то вроде
RewriteRule ^/$ /script.php?param1=value1&param2=value2&param3=$1
Со вторым вариантом у меня вобще нет идей даже!
цитата
05/06/10 в 06:45
 Corex
Всё зависит от возможных значений и допустимых символов в каждом из 2-х вариантов. Если в первом (value3) значения будут только цифро-буквенные, без тире, а во втором (value3-subvalue1) с тире, то можно разграничить правило на основе этого тире. Если значения могут быть и там и там абсолютно любые, то никак.

Например, если есть запрос http://www.domain.com/some-new-value/, то его куда определить, в 1-й или 2-й вариант?
цитата
05/06/10 в 08:52
 Corex
Вот такие правила получаются, разделение на основе "-":
RewriteRule ^([a-z0-9]*)/?$ script.php?param1=value1&param2=value2&param3=$1 [QSA,L]

RewriteRule ^([a-z0-9]*)-([a-z0-9]*)-?([a-z0-9]*)?/?$ script.php?param1=value1&param2=value2&param3=$1|$2|$3 [QSA,L]

Для второго можно добавить ещё уровней/отрезков -?([a-z0-9]*)? (в зависимости от кол-ва тире в запросе). И передать в param3 значения с разделением через "+" не получится, т.к. это рабочий символ (даже с экранированием), я поставил другой разделитель "|".

Хотя чем париться с разделителями "+" или "|", можно просто оставить "-", тогда правило можно сделать универсальным.
цитата
05/06/10 в 09:15
 Vyacheslav
Ага, кажись догнал!
Спасибо за помощь!


Эта страница в полной версии