русские url в адресной строке.

Тема в разделе "PHP", создана пользователем EvgeniiGen, 24 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. EvgeniiGen

    EvgeniiGen Постоялец

    Регистр.:
    21 янв 2009
    Сообщения:
    131
    Симпатии:
    56
    Прошу помощи , как реализовать русские урлы, как Вики.
    Сайт у меня написан на html, хостинг виртуальный так что к настройке пшп доступа нет.

    Думал насчёт этих функций

    rawurldecode ()
    rawurlencode ()
    UrlEncode ()
    UrlDecode ()
    base64_encode ()
    base64_encode ()

    Но как реализовать бы мне разжевали.
    Скорее всего нужно будет прописать реализацию пшп в штмл
    Во общем подскажите подробнее.
    Спасибо.
     
  2. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    ссылка например example.com/Текст
    в ссылке Текст заменить пробелы на _ str_replace(" ", "_", Текст) убрать спец символы и перекодировать Текст rawurlencode("Текст") или urlencode("Текст":(
    PHP:
    $text_url "Текст";
    $text_url str_replace(' ','_'$text_url);
    $text_url str_replace('/','_'$text_url);
    $text_url str_replace('%2F','_'$text_url);
    $text_url str_replace("\\""_"$text_url);
    $text_url str_replace("%26""_"$text_url);
    $text_url str_replace("%23""_"$text_url);
    $text_url rawurlencode($text_url);

    $url "example.com/."$text_url;
    можно ещё знаки препинания и другие убрать.
    Дальше создать .htacces файл:
    Код:
    RewriteEngine on
    RewriteBase /
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^([^/]+)/?$ index.php?q=$1 [L]
    
    тут проверка если нет файла или каталога что в ссылке то перенаправляется на index.php?q=
     
  3. EvgeniiGen

    EvgeniiGen Постоялец

    Регистр.:
    21 янв 2009
    Сообщения:
    131
    Симпатии:
    56
    polyetilen: Тоесть первую часть "PHP код:" я вписываю в каждый html документ, а вторую только в .htacces файл?
     
  4. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    да, но если это проблема тогда вручную поменять ссылки в html файлах, для помощи php файл конвертирует текст:
    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Конвертер</title>
    </head>

    <body>
    <?

    $text_url = $_GET['text'];
    $text_url = str_replace(' ','_', $text_url);
    $text_url = str_replace('/','_', $text_url);
    $text_url = str_replace('%2F','_', $text_url);
    $text_url = str_replace("\\", "_", $text_url);
    $text_url = str_replace("%26", "_", $text_url);
    $text_url = str_replace("%23", "_", $text_url);
    $text_url = rawurlencode($text_url);

    echo $text_url; 

    $text = htmlentities(stripslashes($_GET['text']), ENT_QUOTES, 'UTF-8');

    ?>
    <br />
    <form action="" method="get">
    <input name="text" type="text" value="<?=$text?>" />
    <input name="submit" type="submit" value="Конвертировать" />
    </form>

    </body>
    </html>

     
  5. ioleg

    ioleg Создатель

    Регистр.:
    21 сен 2007
    Сообщения:
    11
    Симпатии:
    0
    С каких это пор браузеры перестали понимать "русский" текст? Есть браузеры которые любят переводить автоматом русский текст, но это не мешает ему отправлять данные серверу в первоначальном виде.:nezn:
     
  6. EvgeniiGen

    EvgeniiGen Постоялец

    Регистр.:
    21 янв 2009
    Сообщения:
    131
    Симпатии:
    56
    polyetilen: Кажысь я ничего не понимаю...Не получется...
    Так я ещё раз попробую пояснить.
    Я создаю файл
    о_нас.html
    как сделать так чтоб он так и открывался?
    чтоб ссылка была
    sait.ru/о_нас.html

    Реально ли?
    Сейчас он мне выдаёт редирект на
    The requested URL /index.php was not found on this server.
    Но такого /index.php у меня и нету, всё штмл

    Сменил на index.html стало норм,на главную..
    Но ссылки не работают...
     
  7. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    Если просто на html файл направить то такой .htaccess:
    Код:
    RewriteEngine on
    RewriteBase /htaccess
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^([^/]+)/?$ $1.html [L]
    
    тогда по ссылке sait.ru/страница
    откроется файл страница.html
    в денвере работает но у меня на хостинге файлы с русским названием перекодируются и не работает так что зависит от хостинга.
    Если такие проблемы тогда переименовать файл в o_nas.html
    а .htaccess будет:
    Код:
    RewriteEngine on
    RewriteBase /
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^о_нас/?$ o_nas.html [L]
    
    и добавлять для каждой ссылки последнюю строку, сохранить htaccess файл в utf-8 кодировке. Будет работать ссылка
    sait.ru/о_нас
    которая направит на файл sait.ru/o_nas.html

    если надо ссылку sait.ru/о_нас.html направить на sait.ru/o_nas.html тогда:
    Код:
    RewriteEngine on
    RewriteBase /
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^о_нас.html/?$ o_nas.html [L]
    
     
  8. EvgeniiGen

    EvgeniiGen Постоялец

    Регистр.:
    21 янв 2009
    Сообщения:
    131
    Симпатии:
    56
    К сожалению не выходит:

    The requested URL /о_нас.html was not found on this server.

    Ни один из методов ни дал результата((
     
  9. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    о_наÑ� этот ответ в кодировке iso-8859-1 a htaccess файл похоже в кодировке windows-1251 поэтому редирект пропускается, htaccess файл должен быть в кодировке utf-8, прицепил файл
     

    Вложения:

    • htaccess.zip
      Размер файла:
      244 байт
      Просмотров:
      10
  10. EvgeniiGen

    EvgeniiGen Постоялец

    Регистр.:
    21 янв 2009
    Сообщения:
    131
    Симпатии:
    56
    Пошель бица ап стену..
    То что ты пишешь сработало
    я ниже добавляю строчку
    RewriteRule ^пластиковые_окна_цена_качества.html/?$ plastikovie_okna_cena_svejego_vozdyha.html [L]

    И уже не работает((
     
Статус темы:
Закрыта.