rewrite по русски

Sash [None]

Новичок
rewrite по русски

Если у кого-нибудь из вас есть ЖЖ, вы наверное знаете, что там ожно помечать записи темами (TAG), в том числе и русскими. Так вот может ли мне кто-нибудь, как это осуществлено? Все мои тщетные попытки заставить реврайт понимать русский не увенчались успехом. Поиск, собственно, тоже ничего не дал. Кроме размытых ("разная кодировка", "разные браузеры", бла-бла-бла, бе бе бе) В ЖЖ работает, значит возможно! Вопрос - как??
 

Sash [None]

Новичок
baev, ну ну, а на практике пробовал? :) Я да, и приходят в скрипт мне данные совершенно не такого вида. Если вбивать руками в юрл /photos/зима, то скрипту приходят значения чем-то похожие на ‹°°¬•, но никак не %23%15%46.
 

Sash [None]

Новичок
baev, спасибо, попробовал. Действительно... работатет. Но... в юникоде... Это уже проще, значит можно перекодировать.
фывайцуфчвыфыв = фывайцуфчвыфыв
Но это уже совершенно другая функция...
И тогда встречный вопрос по РеврайтРуле. Как поставить условие, что это должны быть буквы, типа [a-zA-Z]+ но на русский, или тут уже никак?
 

phprus

Moderator
Команда форума
Sash [None]
Добавь еще цифры и символ %, тогда url-кодированные строки тоже будут восприниматься правильно.
 

Sash [None]

Новичок
phprus, ээм.. (\%[0-9]{2}+) ? Просто я в регулярках не очень, а за реврайт вообще день назад взялся.
 

maxru

МИФИст
RewriteEngine On
RewriteBase /
Options +FollowSymlinks
RewriteRule ^(([[:alnum:]_-]+/?)+)$ index.php?path=$1&%{QUERY_STRING}

Данное правило работает только для директорий (файлы пропускает), но так и задумывалось. Проблема в том, что при наборе http://somehost.org/folder/ещепапка/ Apache выдает сообщение о том, что данный файл не найден.
Проверялось при такой регулярке:
RewriteRule ^(([[:alnum:]А-Яа-яЁё_-]+/?)+)$

Наверняка я в чем-то ошибаюсь, но доков по работе с mod_rewrite и русскими путями я не нашел.

-~{}~ 21.03.07 22:19:

"ещепапка" - естественно кириллическими символами )
 

maxru

МИФИст
Я это знаю. Я также знаю, что браузер отправляет url encoded строку на сервер. Но, как говорится, The requested URL /блоги/ was not found on this server.

-~{}~ 21.03.07 23:28:

Получается как-то так.
RewriteRule ^((.+)[^(png|gif|jpe?g)])$ index.php?path=$1&%{QUERY_STRING}
Не совсем то, что хотелось, но все же )))

-~{}~ 22.03.07 00:08:

Воспользовался первой функцией SiMM'а, в результате имею:
http://somehost.org/кириллица/алфавит/

рєрёсђрёр»р»рёс†р°/алфавит/

Что-то я не понимаю, с чего бы до первого слэша utf не конвертится в кириллицу...
 

Sash [None]

Новичок
maxru, Я проблему решил следующим образом: Сначала сделал реврайт руле для всех возможных вариантов, а потом для "тегов". от ту фигню, перевожу из UTF в 1251 - функцией, которую нашел где-то в мануале

// $type:
// 'w' - encodes from UTF to win
// 'u' - encodes from win to UTF

static $conv='';
if (!is_array ( $conv ))
{
$conv=array ();
for ( $x=128; $x <=143; $x++ )...........................
....
....

И в принципе всё работает очень даже неплохо :)
 

maxru

МИФИст
Не, все возможные варианты не катят ) Посчитай, сколько можно сложить вариантов строки, скажем из 10 символов из алфавита в 33 символа?
 

Sash [None]

Новичок
нет, ты не понимаешь. все возможные варианты я имел в виду по реврайту, на другие условия. Последним идёт RewriteRule ^photos/(.+)$ /photo.php?tag=$1

А дальше уже в скрипте разбираю то, что мне прислано.
 

maxru

МИФИст
В том-то и дело, что я хочу отдавать картинки, архивы, css (ну и еще, что захочу) без участия скриптов. Все остальное скармливается скрипту. Вот мучаюсь, никак не могу написать правило, которое перенаправляло на index.php?path=$1&%{QUERY_STRING} все, кроме, скажем png|gif|jpe?g|css|zip|rar

-~{}~ 22.03.07 01:22:

Все, сам догадался
RewriteRule ^(.+\.(png|gif|jpg)) - [S=1]
RewriteRule ^(.+)$ index.php?path=$1&%{QUERY_STRING}

-~{}~ 22.03.07 01:49:

http://mephist.org/новости/2 - Работает!!!!
Спасибо всем за советы.
 

Sash [None]

Новичок
Оторвите мне руки и засунте туда, откуда они ростут, но я всё равно не могу понять, как такое может быть:
RewriteRule ^(photos|photo|foto)/(.+)$ /photo.php?tag=$2

работате либо с photos либо с foto, но отказывается работать с photo, какого чёрта?
 
Сверху