Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Вопрос по mod_rewrite (http://forum.oszone.net/showthread.php?t=219344)

SadWolf 31-10-2011 11:12 1785554

Вопрос по mod_rewrite
 
Вот адрес http://www.site.ru/tovar.php?mod=cat...=33&tov_id=328
Напишите пожалуйста строку RewriteRule, чтобы адрес выглядел как
http://www.site.ru/tovar/cat/33/328

Sham 31-10-2011 11:31 1785569

Код:

RewriteRule tovar\/cat\/([0-9]+)\/([0-9]+)\/?$ tovar.php?mod=cat&cat_id=$1&tov_id=$2

SadWolf 31-10-2011 12:03 1785593

Не получается, чуть переделал вот
Код:

RewriteRule ^tovar/cat/([0-9]+)/([0-9]+)/? tovar.php?mod=cat&cat_id=$1&tov_id=$2 [L]
, все равно не то

Sham 31-10-2011 12:11 1785597

Что переделали - можете объяснить смысл? В каком контексте выполняется правило? Какие другие правила в этом же конфиге? Есть ли сторонние правила (nginx и тд)?

SadWolf 31-10-2011 13:07 1785643

Скрипт тестируется на Денвере, сторонних правил нет. А переделал - вашу строчку, убрал обратные слэши.
Вот содержимое файла .htaccess
Код:

RewriteEngine on
RewriteRule ^tovar/cat/([0-9]+)/? tovar.php?act=cat&cat_id=$1 [L]
RewriteRule ^tovar/cat/([0-9]+)/([0-9]+)/? tovar.php?mod=cat&cat_id=$1&tov_id=$2 [L]

в первом случае выводится список товаров, все нормально работает, во втором - информация о товаре, вот тут проблемы... скрипт судя по всему игнорирует параметр tov_id

Sham 31-10-2011 13:26 1785652

второе не сработает, поскольку совпадает с первым.
Цитата:

Цитата SadWolf
убрал обратные слэши »

это экранирование, не критично

Чтобы правила работали, задайте конец урла $ (как в посте 2). Еще лучше - сделать одно общее.

SadWolf 31-10-2011 13:46 1785676

Цитата:

Цитата Sham
второе не сработает, поскольку совпадает с первым. »

и каков же выход?

Sham 31-10-2011 17:09 1785834

Цитата:

Цитата Sham
задайте конец урла $ (как в посте 2). »

Код:

RewriteEngine on
RewriteRule ^tovar/cat/([0-9]+)/?$ tovar.php?act=cat&cat_id=$1 [L]
RewriteRule ^tovar/cat/([0-9]+)/([0-9]+)/?$ tovar.php?mod=cat&cat_id=$1&tov_id=$2 [L]


SadWolf 31-10-2011 17:14 1785838

Спасибо, задача решена. Можно было еще так: во второй строчке заменить tovar на, например, tovarinfo


Время: 00:52.

Время: 00:52.
© OSzone.net 2001-