Всем доброго времени суток! Добро пожаловать на мой блог! Сегодня мы подготовим о дальнейшем развитии глобального цикла "создать блог с нуля", а именно определим план создание ЧПУ на нашем сайте, если быть точнее блоге =) Я расскажу о том как можно превратить динамичный url в так называемый "человеко-понятный", по какому алгоритму будут меняться ссылки на нашем блоге и немного затрону безопасность, то бишь сердце модуля чпу
Думаю для начало необходимо поговорить о том зачем все это надо?
Я не делал какие либо расследования, немного покопался в интернете, и вот чего нарыл. Сторонники за поделились на две группы:
Насчет людей из первой группы, я не говорю, что они на все 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. Все кто когда либо создавал свои проекты в сети, видели такие файлы в директории сайта. У сервера 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. Хочу напомнить, что для вывода статьи из базы данных необходима именно эта переменная
а дальше уже идет привычный алгоритм вывода текстов на страницу нашего блога
По мимо самого файла htaccess (этот файл самое простое в реализации ЧПУ) у нас сейчас нет колонки в базе данных, которая содержит имена ссылок (dobro-pozhalovat-v-cms-rs-blog-v2.html), поэтому нам необходимо будет создать такую колонку!
Необходимо будет написать функцию автоматического преобразование заголовков постов в трансилт, для генерации имен ссылок (dobro-pozhalovat-v-cms-rs-blog-v2.html)
Так же необходимо будет написать алгоритм с помощью которого по имени ссылки скрипт определит id записи.
Ну и самое сложное, это реализовать автоматическую смену ссылок на кнопках (ссылках) блога. Под раздачу попадет, например, модуль мини новостей и модуль меню.
Так же придется подумать о редиректе с несуществующих ссылок на страницу 404 ошибки.
В общем работы до опы, но не будем отчаиваться, красивые ссылки требуют жертв =) Если Вам интересен мой блог, то подпишитесь на RSS ленту блога через ридер, или же по почте
Если у Вас есть какие вопросы то пользуйтесь формой ниже
Удачи Вам! На сегодня у меня все
А по хорошему, надо делать одну точку входа - index.php, и реализовывать роутинг в самом движке, без использования mod_rewrite, ну разве что только для того, чтобы избавиться от index.php в адресной строке.
Так устроены все популярные фрейворки