Уважаемые читатели сайта Ajaxs.ru

Очень рад что вы зашли на мой сайт. Надеюсь, Вы сможете найти здесь для себя полезную информацию. Зарегистрировавшись на сайте вы получаете ряд преимуществ:
1. При комментировании Вам не нужно вводить имя и капчу с картинки
2. Вы можете получать уведомления на Email к интерисующим вас урокам
3. Вы можете редактировать свои комментарии

Вход на сайт


Забыли пароль



Восстановление пароля


Войти на сайт

Зарегистрироваться

Главная / Уроки по PHP / Просмотр урока

     

Создание сайтов


Вам нужен небольшой сайт или просто хотите доработать уже существующий? | Подробнее

Учимся делать «человекопонятный урл» (ЧПУ)

Посещая различные сайты в Интернете, многие сталкивались с тем, когда адрес какой-то статьи представляет собой название этой статьи, переведенной на латинские буквы. Это и есть «человекопонятный урл» или ЧПУ.  Концепция ЧПУ предполагает максимально интуитивно понятные адреса, которые показывают естественную для человека логическую структуру данных на сервере. Для создания таких ссылок в веб-сервере Apache существует мощный модуль mod_rewrite, который включается в стандартный дистрибутив.

Вот некоторые из достоинств использования ЧПУ:

Адрес понятен человеку и легко запоминается.
Использование такого метода улучшает индексацию поисковых систем.

Теперь займемся практикой и рассмотрим пример на веб-сервере Денвер. Допустим, у нас создан виртуальный хост Z:/home/example/www. В этой директории мы создаем страницу, в которой будет находиться ссылка, например, index.html, файл .htaccess и файл example.php, который будет показывать, что представляет наш преобразованный адрес. Допустим нам надо преобразовать ссылку, содержащую категорию и идентификатор заметки такого вида:

http://example/example.php?cat=music&id=5

в такую:

http://example/music/5.html

Для этого в файле .htaccess пропишем следующие строки:

RewriteEngine on
RewriteRule ^example/([a-z]+)/([0-9]+) .html /? example.php?cat=$1&id=$2

Теперь в файле index.html создадим уже преобразованную ссылку:

<html>
<head>
<title>
ЧПУ</title>
</head>
<body>
<a
href="music/5.html">Ссылка</a>
</body>
</html>

После этого создаем страницу, которая выведет ссылку эквивалентную нашей.

<?php
$cat = $_GET[cat];
$id = $_GET[id];
echo "Это ссылка: example.php?cat=$cat&id=$id";
?>

Ну вот, теперь ссылка http://example/music/5.html получилась равносильной этой http://example/example.php?cat=music&id=5. Все переменные нормально передаются и Вы можете их использовать, где это требуется.

Автор: Евгений Бочкарев Урок добавлен: 14 Февраля 2010 в 23:17 Просмотров: 14811

Условия копирования материалов сайта

Все комментарии

Посмотреть предыдущие комментарии (11)

#12 fokir 31-08-2011 в 13:34
у меня денвер ругается, что библиотеку перл ставить надо
#13 Евгений 31-08-2011 в 13:44
Тут мы меняем настройки апача, а перл и php тут не причем, проблема в чем то другом.
#14 fokir 31-08-2011 в 14:00
http://svoimir73.ru/id/error.html вот страница ошибки
#15 Егор 16-02-2012 в 07:02
Надо так писать:
RewriteEngine on
RewriteRule ^music/([a-z]+)/([0-9]+).html /? music.php?cat=$1&id=$2 [QSA,L]
тогда все будет нормально работать и переменные передаваться без проблем будут.
#16 Егор 16-02-2012 в 07:04
Надо так писать: RewriteEngine on RewriteRule ^music/([a-z]+)/([0-9]+).html /? music.php?cat=$1&id=$2 [QSA,L] тогда все будет нормально работать и переменные передаваться без проблем будут. Админ сделай нормальную систему комментирования, а то отображаются символы перевода каретки )))))
#17 pixmaster 02-03-2012 в 02:59
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)/(.*?) music.php?cat=$1&id=$2 [L]

выражение !-f говорит что не нужно применять реврайт если файл реально существует и не нужно ничего переименовывать и писать полные пути
#18 Asler 15-04-2013 в 23:38
А у меня никаких изменений в url не происходит ни на dendtht ни на сервере.
И все вроде как у всех http://адрес.net/lessons.php?cat=11&id=5 Но вписание в .htacces выше приведенных примеров не дает результатов. Может кто помочь?
#19 Евгений 16-04-2013 в 10:19
Сами ссылки автоматически не изменятся, они просто будут работать по таким адресам, которые указываются. А поменять их придется все равно самому.
#20 Asler 16-04-2013 в 18:05
Все, спасибо, разобрался (хотя этот код мне так и не подошел, пришлось порыться в нэте и нашел, но принцип тот же) и теперь все в поряде. так же теперь вывожу title в url через транслит. Может кому пригодится:

<?
function translit($str)
{
$translit = array(
"А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
"Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
"Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
"О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
"У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
"Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
"Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
"ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya","/"=>"_"," "=>"_"
);
return strtr($str,$translit);
} ?>


Ну и сам вывод:



$title = $myrow['title'];
$url_elements = translit($title);


#21 Железо 05-04-2016 в 00:12
Классная статейка и полезная
Добавить новый комментарий

Автор:

Текст сообщения:

Если в комментарии присутствует код, пожалуйста вставляете его между тегами [code][/code]

cap

Код с картинки:


Получать уведомления о новых комментариях по Email могут только зарегистрированные пользователи.

41001346159934
R314489888859
Уроки
Для начинающих
Интересное
Файлы
Полезное
Опрос

Много ли среди программистов девушек?

Последние комментарии
Ссылки