Помогите, плиз, из страшненького УРЛа сделать ЧПУ

supra
На сайте с 09.04.2006
Offline
40
570

Требуется ссылку вида:

http://abcd.ru/index.php?event=view&id=112420461684&msnum=53292

преобразовать в:

http://abcd.ru/view_53292.html

Сотворил в .htaccess следующее, но знаю, что не все верно:

RewriteEngine on

RewriteRule ^.htaccess$ - [F]

RewriteRule ^view_(.*).html$ index.php?event=view&id=$2&msnum=$1

Параметр "$2" не нужен в ссылке "view_(.*).html", но проблема в том, что без него не работает.

Пожалуйста, подскажите верное решение.

Dimox.name (http://dimox.name)
Segey
На сайте с 23.08.2005
Offline
404
#1
supra:
.*

Символьные классы так не пишутся, нужно написать [.]* это значит что сколько угодно вхождений любых символов, кроме переноса строки.

view&id=$2

Вот это вы неправильно подставляете, так как в строке http://abcd.ru/view_53292.html

только один фрагмент есть для второй переменной, а значит на место первой выничего не можете подставить. Вам нужно сделать url вида:

site.ru/viev_112420461684_53292.html

т.е. тут оба числа есть и из них можно будет подставить, вот так выглядит это:

RewriteRule ^view_([0-9]*)_([0-9]*).html$ index.php?event=view&id=$1&msnum=$2
Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
supra
На сайте с 09.04.2006
Offline
40
#2
Segey:
Вам нужно сделать url вида:

site.ru/viev_112420461684_53292.html

В том-то и дело что в результате нужен урл именно вида view_53292.html, а не view_112420461684_53292.html

pauk
На сайте с 26.01.2005
Offline
543
#3
Hi!
Kolyaj
На сайте с 28.03.2006
Offline
69
#4
Segey:
Символьные классы так не пишутся, нужно написать [.]* это значит что сколько угодно вхождений любых символов, кроме переноса строки.

Зачем людей в заблуждение вводите. Точка - метасимвол, означающий любой символ кроме \r и \n. В квадратных скобках точка становится просто символом, т.е. [.]* это сколько угодно вхождений именно точки. Вообще внутри символьных классов только два метасимвола: "^" если стоит в начале класса и "-" если стоит не в начале класса.

lexwrlk
На сайте с 12.10.2005
Offline
130
#5
supra:
В том-то и дело что в результате нужен урл именно вида view_53292.html, а не view_112420461684_53292.html

Если id у Вас может изменяться то никак, однако

это будет возможно только если id у Вас неизменный и всегда имеет значение 112420461684 тогда пишите так:

RewriteRule ^view_(.*)\.html$ index.php?event=view&id=112420461684&msnum=$1

СДЛ СДЛу рознь (с) Форест Гамп

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