mod_rewrite и русский алфавит

superman5000

Новичок
mod_rewrite и русский алфавит

Объясните, пожалуйста, как написать правило для mod_rewrite так, чтобы он правильно передавал русские буквы

моя строка выглдяит вот так:

RewriteRule ^show_firms/(.*)$ index.php?action=showfirms&current_letter=$1

для английских букв и для цифр такая форма работает,
а для русских букв после urlencode (вида %C0) сервер выдает Internal Server Error...

как бы это исправить?
 

Фанат

oncle terrible
Команда форума
В ЛОГАХ СЕРВЕРА смотри ту ошибку, которую надо исправлять, чудик.

"машина не едет" - это только у блондинок и суперменов ошибка.
а у людей с мозгами ошибка - это "карбюратор засорился" или "аккумулятор полетел."
 

superman5000

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

[Tue Oct 17 02:15:23 2006] [error] [client 127.0.0.1] \x07File 'c:\\mysql\\share\\charsets\\?.conf' not found (Errcode: 2), referer: http://localhost/catalogue/show_firms/H
[Tue Oct 17 02:15:23 2006] [error] [client 127.0.0.1] \x07Character set '#51' is not a compiled character set and is not specified in the 'c:\\mysql\\share\\charsets\\Index' file, referer: http://localhost/catalogue/show_firms/H

без mod_rewrite'а скрипт нормально работал, проблем не было. а с ним - есть


а ник у меня такой отличный исключительно из-за невероятной популярности вашего форума. :)
 

Фанат

oncle terrible
Команда форума
зато вы умны и вполне могли бы мне помочь.
не "могли бы", а помогаем. и не худо бы сказать спасибо.

если я ещё раз услышу от тебя это нищебродство - "я , между прочим, вопрос задал, так что забегали тут все с ответами" - вылетишь отсюда со свистом. Здесь тебе никто ничем не обязан.
Не нужно в каждом вопросе тыкать в то, что ты пришёл за помощью. Это и так по тебе видно.
Так что будь добр впредь писать только по делу.
я вот честно не очень понимаю, что бы это могло значить:
а понимать и не надо.
надо вбить текст ошибки в гугель и почитать, что делали люди, которым встречалась такая же.
Выполняй.
 

superman5000

Новичок
Фанат, спасибо

"я , между прочим, вопрос задал, так что забегали тут все с
ответами" - это сильно исковерканая фраза. я такого не говорил.

вообщем, я исправил предидущую проблему. ответ нашелся здесь:
http://dev.mysql.com/doc/refman/5.0/en/problems-with-character-sets.html

но Internal Server Error все равно никуда не исчезла. теперь он пишет:

(22)Invalid argument: utf8 to ucs2 conversion failed on this string: REDIRECT_QUERY_STRING=action=showfirms&current_letter=\xc0

в интернете все ругаются на эту ошибку, когда запрос с русскими буквами отправляют. а у меня буквы уже перекодированы urlencode()
и еще раз замечу, что без mod_rewrite скрипт работает. поэтому я думаю, что ошибся в написании правила для mod_rewrite.

я не понимаю, почему вместо %C0 (URL выглядит как /catalogue/show_firms/%C0) значение переменной становится "\xc0" (в логе уже выглядит как action=showfirms&current_letter=\xc0)?
 

superman5000

Новичок
вот это ответ )
спасибо

значит, проблема не в правиле, а в апаче.
ура.
 

svm

Новичок
У меня та же проблема, уже все перепробовал.
И новую версию Apache поставил 2.2.10

В URL строке:
http://dic/search/num/%C0/

В .htaccess:
RewriteRule ^search/([a-z]+)/([^/]+)/?$ search.php?dic=$1&search=$2 [L]

В логе Apache пишет:
(22)Invalid argument: utf8 to ucs2 conversion failed on this string: REDIRECT_QUERY_STRING=dic=num&search=\xc0
[error] [client 127.0.0.1] (22)Invalid argument: couldn't create child process: 22: php-cgi.exe
[error] [client 127.0.0.1] (22)Invalid argument: couldn't spawn child process: C:/Server/Php/php-cgi.exe

Заранее благодарен.
 
Сверху