RewriteRule при кодировании русских ссылок

Ord

Новичок
RewriteRule при кодировании русских ссылок

Здравствуйте, столкнулся с проблемой. Сделал сайт с RewriteRule, где ссылки типа site.ru/main/2, но понадобилось чтобы в переменной $id содержался русский текст, например
site.ru/main/поисковый запрос/

Соответственно использую urlencode, urldecode, но не соображу как прописать это всё в .htaccess, эксперты, помогите пожалуйста. Ещё попрошу, если кто знает какой-нить док хороший и понятный по регулярным выражениям.

--- Мой .htaccess ---

RewriteEngine on

RewriteRule ^([a-z_A-Z_0-9]+)$ index.php?page=$1
RewriteRule ^([a-z_A-Z_0-9]+)/$ index.php?page=$1

RewriteRule ^([a-z_A-Z_0-9]+)/([a-z_A-Z_0-9]+)$ index.php?page=$1&id=$2
RewriteRule ^([a-z_A-Z_0-9]+)/([a-z_A-Z_0-9]+)/$ index.php?page=$1&id=$2
....
 

Ord

Новичок
Спасибо :) пойду изучать, если кто может напишите пожалуйста ответ по существу или если я решу свою задачу, чуть позже отпишу
 

leadaxe

Новичок
Никогда не пробовал, но [а-Я] не работает?
если нет, то попробуй HEX последовательности в формате \xNN
 

baev

‹°°¬•
Команда форума
leadaxe, ерунду не пишите.


Ord, всё очень просто.
Достаточно взглянуть на «енкоженый» урл: какие символы есть там и отсутствуют в Ваших регулярках.
 

Ord

Новичок
да вот вопрос как раз в том, как в RewriteRule, записать % :p, поэтому просил док по регуляркам или просил совета, как запихнуть туда % :)

похоже надо дописать \%
 

Ord

Новичок
RewriteRule ^([a-z_A-Z_0-9]+)/\%([a-z_A-Z_0-9]+)$ index.php?page=$1&id=$2

так не получилось
 

KaYSer

Новичок
\%([a-z_A-Z_0-9]+)
это только для одного символа - занеси процент в чарлист
а вообще так не выйдет вроде))

можно сделать так:
RewriteRule ^([a-zA-Z0-9]+)/(.+)$ index.php?page=$1&id=$2

тогда спокойно сработает http://site.ru/main/поисковый_запрос
 

Ord

Новичок
не - проблема как раз в том, что в браузере русские ссылки не распознаются, поэтому я их закодировал в последовательность шестнадцатеричных кодов, на выходе я их раскодирую, но .htaccess не распознаёт %

пока загадку не разгадал с %, KaySer ваш пример не работает

RewriteRule ^([a-z_A-Z_0-9]+)/([\%A-Z_0-9|a-z_A-Z_0-9]+)/$ index.php?page=$1&id=$2

Так тоже не прошло :p
 

Ord

Новичок
Объясняю смысл - сделал поиск по сайту, есть база с произведёнными пользователями поисковыми запросами, все запросы выводятся на отдельную страничку, при нажатии на запрос должна вылетать информация по этому поисковому слову

тоесть при нажатии на (ссылку-поисковое слово), оно передаётся в переменную

например в яндексе наберите какое-нибудь русское слово и посмотрите что он выдаёт в ссылке - 16-ричные символы с %
 

KaYSer

Новичок
в яндексе наберите какое-нибудь русское слово и посмотрите что он выдаёт в ссылке - 16-ричные символы с %
он выдаёт их в query...
http://ru.wikipedia.org/wiki/URL

повторюсь...
(.+) - для "русских"
 
Сверху