подскажите по ЧПУ запросов вида site.ru/12

G
На сайте с 05.02.2012
Offline
73
330

Здравствуйте, уважаемые форумчане. Прошу вашей помощи.

site.ru/12 должен передать в параметр "12" но передает только первую цифру, то есть 1, если бы было 23, передало бы 2

Привожу строку из .htaccess, которая выполняет преобразования

RewriteRule ^(.*)([0-9]+)$ $1?tc=1&dest=$2 [L]

ещё одна проба то же самое вернула

RewriteRule ^(.*)([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]+)$ $1?tc=1&dest=$2 [L]

Почему тогда в строке вида

RewriteRule ^(.*)([0-9]+)/([0-9]+)$ $1?tc=2&dest=$3&volID=$2 [L]

этот же параметр стоит вторым и берется любое количество цифр в числе. То есть второй параметр идет уже как надо.

Карамба!
siv1987
На сайте с 02.04.2009
Offline
427
#1
gterkin:
(.*)([0-9]+)

Потому что это выражение составлено неправильно. . - соответствует любому символу, в том числе и цифрам. То есть сначала отработает это условие и захватит все, а потом следующие и захватит только последнюю цифру. Одним словом магия regexp. Вначале регулярку желательно тестировать, например http://gskinner.com/RegExr/

Если урл вида site/123, то в (.*) нет необходимость

RewriteRule ^([0-9]+)$ index.php?tc=1&dest=$1 [L]

G
На сайте с 05.02.2012
Offline
73
#2
siv1987:
Потому что это выражение составлено неправильно. . - соответствует любому символу, в том числе и цифрам. То есть сначала отработает это условие и захватит все, а потом следующие и захватит только последнюю цифру. Одним словом магия regexp. Вначале регулярку желательно тестировать, например http://gskinner.com/RegExr/
Если урл вида site/123, то в (.*) нет необходимость

RewriteRule ^([0-9]+)$ index.php?tc=1&dest=$1 [L]

спасибо большое. Я этот вариант пробовал, но без "index.php". Не работало. В таком варианте работает... Кстати, берет первую цифру, а не последнюю :)

Благодарю за помощь!

siv1987
На сайте с 02.04.2009
Offline
427
#3
gterkin:
Кстати, берет первую цифру, а не последнюю

Первая цифра (и не только первая) будет в первой группе, во второй последняя как не крути. И тестер это даже подтверждает http://regexr.com?37cmt

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий