Теория реализации ЧПУ на сайте с помощью файла htaccess

 

Всем доброго времени суток! Добро пожаловать на мой блог! Сегодня мы подготовим о дальнейшем развитии глобального цикла "создать блог с нуля", а именно определим план создание ЧПУ на нашем сайте, если быть точнее блоге =) Я расскажу о том как можно превратить динамичный url в так называемый "человеко-понятный", по какому алгоритму будут меняться ссылки на нашем блоге и немного затрону безопасность, то бишь сердце модуля чпу

 

 

Думаю для начало необходимо поговорить о том зачем все это надо?

 

ЧПУ на сайте, в чем смысл?

 

Я не делал какие либо расследования, немного покопался в интернете, и вот чего нарыл. Сторонники за поделились на две группы:

  • Первые говорят, что такие адреса лучше воспринимаются человеком, как бы врезаются в память позволяя найти блог не через поисковик а прямиком через адресную строку. По мне так это чушь! вот адрес ссылки:
    http://rio-shaman.ru/post/dobro-pozhalovat-v-cms-rs-blog-v2.html
    Запомнили? Я думаю нет, а если даже и запомнили, то через неделю Вы не вспомните (естественно есть исключения, человек 10-12 но есть!)
  • Вторые кричат что ЧПУ повышает шанс пробиться в ТОП поисковиков, так как поисковики понимают транслит, и натыкаясь на ключевое слово в ссылке засчитывают его как ключевое слово. Это куда ближе к истине.

Насчет людей из первой группы, я не говорю, что они на все 100% не правы, но ссылки заточенные под поисковики, а таких в интернете больше (намного больше), не реально запомнить, слишком много букф, другое дело если ссылка имеет вид:

http://rio-shaman.ru/post/1/

Но вот только беда, ключевого слова в таких ссылках нет, стало быть такие ссылки только для красоты, а на красоте в ТОП поисковика не уедешь (поисковику по фиг на красоту, он юзабилити определяет по поведенческому фактору)

Подумав решил для себя вот что. ЧПУ необходим только как средство SEO оптимизации, так как 5 из 10 человек вообще не знают что такое url, 7 из 10 на адресную строку не смотрят, а делать эстетические ссылки ради меньшинства считаю не рентабельным. Поэтому при выборе, какие ссылки делать, я выбрал вот такие:

http://rio-shaman.ru/post/dobro-pozhalovat-v-cms-rs-blog-v2.html

Если Вам необходимы ссылки другого вида, то Вы сможете создать их аналогично моим (я имею ввиду по урокам реализации ЧПУ, цикла "создать блог с нуля", что я планирую опубликовать), там расхождения в реализации минимальные

 

Как же делается ЧПУ на сайте, или магия файла htaccess (mod rewrite)

 

В общем то все очень легко. Некоторыми настройками сервера можно управлять через файл htaccess. Все кто когда либо создавал свои проекты в сети, видели такие файлы в директории сайта. У сервера apache есть модуль, так называемый mod rewrite который позволяет из динамических ссылок создавать ЧПУ ссылки.

Я сильно не разбираюсь во всем этом бреде, модули, настройки и тому подобное. Знаю только то как включить этот модуль и превратить динамичный адрес в ЧПУ

В общем разговора много, а по сути нужно лишь создать файл htaccess и прописать в нем вот такую строчку:

RewriteEngine on

После чего модуль mod rewrite можно считать включенным

Преобразование ссылки производится с помощью регулярного выражения, так что советую Вам почитать вот этот пост

 

Пример работы ЧПУ на моем движке

 

Сильно грузить Вас сегодня не буду, но дам пример из моего файла htaccess:

RewriteEngine on
RewriteRule ^post/([-a-z0-9]+.html)$ index.php?post=$1 [L]

Первая строчка подключает модуль, вторая преобразовывает ссылку вида

http://rio-shaman.ru/post/dobro-pozhalovat-v-cms-rs-blog-v2.html

В ссылку вот такого вида

http://rio-shaman.ru/index.php?post=dobro-pozhalovat-v-cms-rs-blog-v2.html

То есть мы получаем следующее.

Пользователь в адресную строку прописывает (например щелчком мыши по ссылке на блоге) вот такую ссылку post/dobro-pozhalovat-v-cms-rs-blog-v2.html А сервер, для обработки, получает вот такую ссылку index.php?post=dobro-pozhalovat-v-cms-rs-blog-v2.html

Все счастливы, пользователь видит ссылку ЧПУ, а сервер видит динамическую, понятную ему каракозябру =))

После преобразований, скрипт блога находит в базе данных, в таблице blog, строчку, колонка которой равна "dobro-pozhalovat-v-cms-rs-blog-v2.html"

строка в базе данных

выводит из этой строчки id, заносит значение id в переменную blog. Хочу напомнить, что для вывода статьи из базы данных необходима именно эта переменная

формирование переменной blog

а дальше уже идет привычный алгоритм вывода текстов на страницу нашего блога

 

Что необходимо будет сделать для реализации ЧПУ на нашем блоге?

 

По мимо самого файла htaccess (этот файл самое простое в реализации ЧПУ) у нас сейчас нет колонки в базе данных, которая содержит имена ссылок (dobro-pozhalovat-v-cms-rs-blog-v2.html), поэтому нам необходимо будет создать такую колонку!

Необходимо будет написать функцию автоматического преобразование заголовков постов в трансилт, для генерации имен ссылок (dobro-pozhalovat-v-cms-rs-blog-v2.html)

Так же необходимо будет написать алгоритм с помощью которого по имени ссылки скрипт определит id записи.

Ну и самое сложное, это реализовать автоматическую смену ссылок на кнопках (ссылках) блога. Под раздачу попадет, например, модуль мини новостей и модуль меню.

Так же придется подумать о редиректе с несуществующих ссылок на страницу 404 ошибки.

 

Заключение

 

В общем работы до опы, но не будем отчаиваться, красивые ссылки требуют жертв =) Если Вам интересен мой блог, то подпишитесь на RSS ленту блога через ридер, или же по почте

Если у Вас есть какие вопросы то пользуйтесь формой ниже

Удачи Вам! На сегодня у меня все

 

Возможно Вам будут интересны следующие заметки

Комментарии (3)

Ваше имя *
Сайт
Ваш E-mail *
Ваше сообщение *
 
Вы не подтвердили условия политики конфиденциальности.
Иван, 20 Апреля 2012 г. 22:24 пишет:
Гость
Хочу заметить, что .html не обязательно хранить в базе данных. лучше хранить ЧПУ заметки без расширения.
А по хорошему, надо делать одну точку входа - index.php, и реализовывать роутинг в самом движке, без использования mod_rewrite, ну разве что только для того, чтобы избавиться от index.php в адресной строке.
Так устроены все популярные фрейворки
Rio-Shaman, 20 Апреля 2012 г. 23:15 пишет:
Автор
К сожалению знаю лишь один способ реализации, поэтому расскажу только о нем...
Ответ для пользователя: Иван
Дмитрий, 23 Апреля 2012 г. 10:42 пишет:
Гость
Спасибо за информацию, я с самого начала изменил тип ссылок, чтобы они отображались подобным оброзом.