Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Человеко понятный URL
Форумы портала PHP.SU » Серверное администрирование » Apache и другие веб-серверы » Человеко понятный URL

Страниц (1): [1]
 

1. Serga - 26 Октября, 2008 - 08:31:24 - перейти к сообщению
Эта тема уже обсуждалась на форуме, но как сделать, чтобы коректно работал URL с кирилецей?

Файл: .htacces
CODE (text):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteRule ^sss/(.*)$ /loadpage.php [NC]


Файл: loadpage.php
PHP:
скопировать код в буфер обмена
  1. <?
  2. $request = urldecode($_SERVER['REQUEST_URI']);
  3. echo iconv("UTF-8", "WINDOWS-1251", $request);
  4. ?>


Запрос серверу (без пробела):
http:// site.ru/sss/тест

На экране напечатает: /sss/тест

Кажется все нормально, но не во всех браузерах. Например в Opere которая установлена на Ubunte напечатает: "/sss/кРокОзЯблы", то есть запрос серверу передается не в кодировке UTF-8.

1. Можно ли как то узнать кодировку запроса от браузера к серверу?
2. Возможно ли настроить apache, чтобы от браузера принимал запросы только в кодировке UTF-8 или чтобы сам перекодировал запрос в UTF-8?
2. valenok - 26 Октября, 2008 - 18:00:05 - перейти к сообщению
а вы добавьте в начале скрипта

CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. header("Content-Type: text/html; charset=utf-8");
  3. ?>
  4.  
  5. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  6.  
3. Serga - 26 Октября, 2008 - 18:17:26 - перейти к сообщению
С header'ом, все нормально, да и браузер отображает коректно.
Кодировка запроса от браузера к серверу не всегда UTF-8.
4. valenok - 26 Октября, 2008 - 18:59:07 - перейти к сообщению
У запроса нет кодировки
5. Champion - 26 Октября, 2008 - 19:05:01 - перейти к сообщению
Вы где пытаетесь это напечатать? Просто на странице? наряду с другим текстом? Откуда тогда проблема берется, я не пойму. И вообще не создавайте файлы и прочие вещи с кириллическими именами и не будет таких проблем
6. ALEN - 27 Октября, 2008 - 09:08:17 - перейти к сообщению
Champion
Вопрос идет в строке запроса (там где url).
Serga
Русские буквы в транлит ельзя перевести?
7. Serga - 27 Октября, 2008 - 13:14:23 - перейти к сообщению
ALENМожно, но тогда эфект русского урла пропадает.
1. Гугл с яндексом понимают транслит, но не всегда.
2. С рускими буквами при размещениии ссылки будут работь якоря, что не мало важно.
Например: кто то размещает ссылку на страницу вашего сайта, в большенстве случаев будет выглядеть так http: //site.ru/тест, слово тест будет в этом случае якорем на страницу, что придаст вес при ранжировании.
8. ALEN - 27 Октября, 2008 - 13:27:38 - перейти к сообщению
Serga
Т.е. тут чисто принципиально русский текст. Тогда нужно углублятся ниже нежели сервер, т.к. если у Вас уже в некоторых браузерах все ок, то нужно смотреть проблему браузеров и т.д.

Serga пишет:
1. Гугл с яндексом понимают транслит, но не всегда.

Скорей русский текст не всегда, а вот транслит - это чисто из a-z делать запросы (ну и еще некотрые символы) - его он всегда будет отлично читать.
9. Serga - 27 Октября, 2008 - 14:13:24 - перейти к сообщению
ALEN
Проблема здесь одна браузеры кодируют url поразному.
Википедия как то определяет кодировку.
Щас ковыряю их движок может разберусь.
10. ALEN - 27 Октября, 2008 - 14:34:21 - перейти к сообщению
Serga
Хотя знаеш я листал сейчас немного и мне кажется - это на сервере, что-то - нужно читать как минимум htaccess
(Добавление)
А кодировка на самой странице не имеет значения

 

Powered by ExBB FM 1.0 RC1