mod_rewrite и URL с русскими буквами.

sickboy

Новичок
mod_rewrite и URL с русскими буквами.

URL'ы
http://example.com/catalog/Б
http://example.com/catalog/Б,up
http://example.com/catalog/Б,down

Правило:
RewriteRule ^(a-z)/(.*),?(up|down)?$ ?do=$1&type=$2&sort=$3 [L]

(.*) получается слишком жадным и "съедает" строку до конца.
Первое, что я придумал, это заменить (.*) на нечто [А-Я], тольку нужно это записать в UTF-8, например если (\xD0\x91), то правило будет работать, но как его расширить до диапазона А-Я?
 

phprus

Moderator
Команда форума
И про URL-кодирование тоже прочитай, так как все нелатинские символы приходят к серверу в url-кодированном виде.
 

sickboy

Новичок
Читал, но скорее всего не понял.
Поэтому просто сделал так:
RewriteRule ^(a-z)/(\xD0\x90|\xD0\x91|\xD0\x92|\xD0\x93|\xD0\x94|\xD0\x95|\xD0\x81|\xD0\x96|\xD0\x97|\xD0\x98|\
xD0\x99|\xD0\x9A|\xD0\x9B|\xD0\x9C|\xD0\x9D|\xD0\x9E|\xD0\x9F|\xD0\xA0|\xD0\xA1|\xD0\xA2|\xD0\xA3|\xD0\xA4|\xD0\xA5|\xD0\xA6
|\xD0\xA7|\xD0\xA8|\xD0\xA9|\xD0\xAA|\xD0\xAB|\xD0\xAC|\xD0\xAD|\xD0\xAE|\xD0\xAF),?(up|down)?$ ?do=$1&type=$2&sort=$3 [L]
 
Сверху