Войти

Показать полную графическую версию : [решено] Вопрос по mod_rewrite


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

Sham
31-10-2011, 11:31
RewriteRule tovar\/cat\/([0-9]+)\/([0-9]+)\/?$ tovar.php?mod=cat&cat_id=$1&tov_id=$2

SadWolf
31-10-2011, 12:03
Не получается, чуть переделал вот
RewriteRule ^tovar/cat/([0-9]+)/([0-9]+)/? tovar.php?mod=cat&cat_id=$1&tov_id=$2 [L], все равно не то

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

SadWolf
31-10-2011, 13:07
Скрипт тестируется на Денвере, сторонних правил нет. А переделал - вашу строчку, убрал обратные слэши.
Вот содержимое файла .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
второе не сработает, поскольку совпадает с первым.
убрал обратные слэши »
это экранирование, не критично

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

SadWolf
31-10-2011, 13:46
второе не сработает, поскольку совпадает с первым. »
и каков же выход?

Sham
31-10-2011, 17:09
задайте конец урла $ (как в посте 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
Спасибо, задача решена. Можно было еще так: во второй строчке заменить tovar на, например, tovarinfo




© OSzone.net 2001-2012