Как подружить mod_revrite с кирилицей?

A
На сайте с 25.11.2011
Offline
9
911

Переделываю линки на чпу и нужно, чтобы в линках присутствовала кирилица, т.е. чтобы получилось например

site.ru/%EA%E8%F0%E8%EB%E8%F6%E0

Пишу в .htaccess

RewriteEngine on
RewriteRule ^([^\/]*)$ 1.php?query=$1

Наотказ отказывается работать. Если вместо кирилицы латиницы - правило срабатывает на ура... Прям какое-то колдовство))

Как можно решить этот вопрос?

siv1987
На сайте с 02.04.2009
Offline
427
#1

Кириллица должна быть в кодировке utf-8 и тогда все будет работать на ура.

ru.wikipedia.org/wiki/%d0%ba%d0%b8%d1%80%d0%b8%d0%bb%d0%bb%d0%b8%d1%86%d0%b0

там с windows-1251 есть какие-то проблемы

MA
На сайте с 16.10.2009
Offline
29
#2

Если хотите вместо

site.ru/this-page

сделать

site.ru/эта страница

Попробуйте так:

RewriteRule ^this-page$ эта\ страница [R=301,L]

P.S. Сам файл .htaccess - в кодировке 1251, если в httpd.conf указано "AddDefaultCharset windows-1251" (как в денвере по умолчанию)

P.P.S. Только зачем извращаться и URL на русском писать? Такими ссылками неудобно перелинковывать, на форумы вставлять опять же )

Ищу площадки без бирж под размещение статей Тематика: ландшафтный дизайн, садоводство, комнатные растения, дача и участок.
A
На сайте с 25.11.2011
Offline
9
#3

Спасибо...

Да, наверное будет проще отказаться от кирилицы в ссылках

Andreyey добавил 27.11.2011 в 01:25

Что-то не удается получить url-кодированое значение

<?php echo urlencode(utf8_encode("кирилица")); ?> не выдает нужное значение. Похоже вместо urlencode нужно использовать другую функцию?

SK
На сайте с 31.08.2007
Offline
81
#4

Там просто нужно urlencode, без utf8

я все скрипты пишу на 1251 и если нужно передать кирилицу в урс просто urlencode хватает

Нужен перенос информации? Информеры на сайт? Сграбить контент? Создать базу товаров? Изготовление любых парсеров! (/ru/forum/836197)
Хорс
На сайте с 14.12.2010
Offline
21
#5
Andreyey:

Что-то не удается получить url-кодированое значение
<?php echo urlencode(utf8_encode("кирилица")); ?> не выдает нужное значение. Похоже вместо urlencode нужно использовать другую функцию?

А с чего Вы взяли, что utf8_encode("кириллица") должно преобразовывать cp1251 в utf8? 🙅


<?php
/**
* И будет Вам счастье
*/
print urlencode(iconv('cp1251', 'utf-8', 'кириллица'));
A
На сайте с 25.11.2011
Offline
9
#6
Хорс:
А с чего Вы взяли, что utf8_encode("кириллица") должно преобразовывать cp1251 в utf8? 🙅

<?php
/**
* И будет Вам счастье
*/
print urlencode(iconv('cp1251', 'utf-8', 'кириллица'));

Вы правы. Спасибо

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий