Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

htaccess и кирилица win-1251

420
31 декабря 2009 года
Fobos
197 / / 10.03.2006
[COLOR="Red"]С наступающими Новым Годом и Рождеством, уважаемые форумчане!!![/COLOR]

Появилась проблемка с ModRewrite ( а может и не с ним :confused: )

Короче, в htaccess простая строчка типо:

 
Код:
RewriteRule ^users/(.+)\.html$ /users.php?login=$1


В общем, эта ерунда должна преобразовывать исходное URL, в обращение к файлу users.php и вставлять туда параметр "Логин".

Проблема в том, что я делаю двиг, в котором разрешены буквы кириллицы в логине и, в итоге, при попытке просмотра пользователя с русскоязычным логином (h**p://somesite/users/пользователь.html), возникает ошибка. В GET возвращаются крякозяблики, очень напоминающие такие, которые получаются при конфликтах между win-1251 и UTF-8.

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

Сам сайт (все файлы, БД) в windows-1251.

Уверен, кто нибудь сталкивался с такой проблемой, но вот в инете не нашел, к сожалению.
12
31 декабря 2009 года
alekciy
3.0K / / 13.12.2005
mod_rewrite зло. Не зря его Сысоев не хотел включать в nginx. Юзай просто 404-ую. Любой веб сервер позволяет создавать свой обработчик для 404-ой, вот это и нужно использовать.
420
31 декабря 2009 года
Fobos
197 / / 10.03.2006
Цитата: alekciy
mod_rewrite зло. Не зря его Сысоев не хотел включать в nginx. Юзай просто 404-ую. Любой веб сервер позволяет создавать свой обработчик для 404-ой, вот это и нужно использовать.



А причем здесь вообще 404 - я ошибка? Возможно вы меня неправильно поняли. Я mod_rewrite использую для создания ну типо ЧПУ :)

Мне не нужно выводить ошибку, если логин кирилицей, а нужно чтобы этот логин корректно передавался в PHP код и далее уже обрабатывался. Просто передаётся он неправильно (как я понял, из-за глюков с кодировками).

Я уже думаю, может просто в скриптах, где есть, применить функцию обратимого шифрования типо base64_encode перед вставкой логина в URL. Тогда проблема должна решиться. Но криво это как-то, да и УРЛ некрасиво выглядеть будет (весь смысл в псевдо-статике пропадает).

Как вариант, можно ID пользователя вставлять. Но это дофига переделывать придётся... Сразу вот я не глянул :mad:

Хотелось бы решение этой ерунды всё-таки найти. На различных сайтах (на основе того же ВордПресс) видел урл-ы кирилицой написанные. Там работало.

12
31 декабря 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: Fobos
А причем здесь вообще 404 - я ошибка? Возможно вы меня неправильно поняли. Я mod_rewrite использую для создания ну типо ЧПУ :)


Я то как раз все правильно понял. http://httpd.apache.org/docs/2.2/mod/core.html#errordocument

420
04 января 2010 года
Fobos
197 / / 10.03.2006
Цитата: alekciy
Я то как раз все правильно понял. http://httpd.apache.org/docs/2.2/mod/core.html#errordocument


Я прекрасно понимаю: данная ошибка возникает при неправильном наборе адреса (несуществующей странице), и я могу поставить редирект на какую-либо страницу при возникновении этой (и не только этой) ошибки по своему усмотрению. Но мне то не это нужно было. Или может я что не понял в ответе. Или сам слишком "замороченно" первый пост написал, что ввел в заблуждение.

В общем проблема решена. Как я сначала и предполагал, дело оказалось в том, что сервер перекодировал кириллицу, передаваемую в таком запросе, в UTF-8, а поскольку все скрипты в windows-1251 получилась несвязуха.

Всё решилось перекодированием на входе проверочной функции переменной из UTF-8 в Windows-1251.

12
04 января 2010 года
alekciy
3.0K / / 13.12.2005
На самом деле перекодировку делает совсем не сервер ;)

Но разрешилось и ладно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог