Показать полную графическую версию : [решено] Вопрос по mod_rewrite
Вот адрес http://www.site.ru/tovar.php?mod=cat&cat_id=33&tov_id=328
Напишите пожалуйста строку RewriteRule, чтобы адрес выглядел как
http://www.site.ru/tovar/cat/33/328
RewriteRule tovar\/cat\/([0-9]+)\/([0-9]+)\/?$ tovar.php?mod=cat&cat_id=$1&tov_id=$2
Не получается, чуть переделал вот
RewriteRule ^tovar/cat/([0-9]+)/([0-9]+)/? tovar.php?mod=cat&cat_id=$1&tov_id=$2 [L], все равно не то
Что переделали - можете объяснить смысл? В каком контексте выполняется правило? Какие другие правила в этом же конфиге? Есть ли сторонние правила (nginx и тд)?
Скрипт тестируется на Денвере, сторонних правил нет. А переделал - вашу строчку, убрал обратные слэши.
Вот содержимое файла .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
второе не сработает, поскольку совпадает с первым.
убрал обратные слэши »
это экранирование, не критично
Чтобы правила работали, задайте конец урла $ (как в посте 2). Еще лучше - сделать одно общее.
второе не сработает, поскольку совпадает с первым. »
и каков же выход?
задайте конец урла $ (как в посте 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]
Спасибо, задача решена. Можно было еще так: во второй строчке заменить tovar на, например, tovarinfo
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.