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

Статус
В этой теме нельзя размещать новые ответы.

EvgeniiGen

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

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

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

Но как реализовать бы мне разжевали.
Скорее всего нужно будет прописать реализацию пшп в штмл
Во общем подскажите подробнее.
Спасибо.
 
ссылка например 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=
 
polyetilen: Тоесть первую часть "PHP код:" я вписываю в каждый html документ, а вторую только в .htacces файл?
 
да, но если это проблема тогда вручную поменять ссылки в 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>
 
С каких это пор браузеры перестали понимать "русский" текст? Есть браузеры которые любят переводить автоматом русский текст, но это не мешает ему отправлять данные серверу в первоначальном виде.:nezn:
 
polyetilen: Кажысь я ничего не понимаю...Не получется...
Так я ещё раз попробую пояснить.
Я создаю файл
о_нас.html
как сделать так чтоб он так и открывался?
чтоб ссылка была
sait.ru/о_нас.html

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

Сменил на index.html стало норм,на главную..
Но ссылки не работают...
 
Если просто на 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]
 
К сожалению не выходит:

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

Ни один из методов ни дал результата((
 
о_наÑ� этот ответ в кодировке iso-8859-1 a htaccess файл похоже в кодировке windows-1251 поэтому редирект пропускается, htaccess файл должен быть в кодировке utf-8, прицепил файл
 

Вложения

  • htaccess.zip
    244 байт · Просмотры: 10
Пошель бица ап стену..
То что ты пишешь сработало
я ниже добавляю строчку
RewriteRule ^пластиковые_окна_цена_качества.html/?$ plastikovie_okna_cena_svejego_vozdyha.html [L]

И уже не работает((
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху