Реклама

Как сделать ЧПУ - человеко-понятный урл Обновлено 25.03.2015

Пришлось самому не много погуглить, но везде только обрывки информации на эту тему... Разумеется, во многих готовых движках, типа Joomla или Wordpress это отображение ссылок уже организованно... Но у меня - самописный движок...

По этом чтобы не ковырять код чужих движков, пришлось искать решение...

Все не так уж сложно, я в принципе опишу систему, без конкретных обрывков кода, будет оно довольно понятно, но реализацию нужно делать самостоятельно под конкретный сайт.

Статья для тех, у кого есть свой сайт на своем движке - самопал, самолеп, и тд и тп =)

Для чего нужен ЧПУ - каждый сам решит по своему, но по моему, если кто-то где-то публикует ссылку на какую-нибудь страницу вашего сайта, то посетители уже будут знать, что они получать пройдя по этой ссылке...

И так - начнем...

Пытка поисковиков не привела ни к чему конктретному, простому... Я, наивный, думал, замутить пару строк в .htaccess и будет мне счастье =)

Но не так все просто =)

И так, выбираем, как должны выглядеть ссылки и к каким параметрам в адресной строке оно пойдет...

Например, я не хочу, чтобы у меня была страница:

http://yurecnt.ru/?id=0 - что тут можно понять?

У нас есть параметр id, которому задается значение 0, но простой смертный юзер, увидев где-то ссылку не поймет, что он тут может найти...

Мы хотим чтобы было:

http://yurecnt.ru/Glavnaya.html

Здесь для примера видно, что это уже - главная страница сайта, возникают ассоциации, что там общая информация, новости или еще что-то, что обычно пишут на главной....

Почему .html - потому что поисковики почему-то по старинке предпочитают иметь дело со статическими html-страницами...

заходим сюда:

http://www.generateit.net/mod-rewrite/index.php

вводим адрес, какой у вас обычно генерируется с параметрами

нажимаем Rewrite URL

и нам предлагается несколько вариантов, как это сделать красиво

по умолчанию, переводит в это http://yurecnt.ru/0.html

уже не плохо, остается добавить ЧПУ

То, что сайт показал в поле Rewrite Rule копируем в .htaccess

И уже можем обращаться так... Но, это всего лишь обращение по ID, нам нужен параметр ЧПУ. То есть в сгенерированном коде либо в исходном меняем id на chpu,

То есть будем вызывать страницу из базы данных не по ID а по понятному значению.

Соответственно, в таблице со страницами необходимо добавить поле chpu, при создании новой страницы или изменении существующей, нужно будет в это поле вносить данные - в идеале - переведенный в транслит заголовок страницы. Можно еще добавлять в конец рандомное значение, вдруг когда-то будет две страницы с одинаковым значением.

И так, с .htaccess и БД понятно... Остается - код, значит, будем кодить...

У меня если ни чего не задано в адресной строке кроме ID, то подключается модуль показа страниц, он берет из бд страницу с нужным ID и отображает. Но сейчас у нас настроенно, что можно брать не только по ID, но и по ЧПУ, так что нам нужно условие, ведь новые страницы или откорректированные будут уже с ЧПУ, следовательно, нам нужен обработчик, который проверяет, задан ли в адресной строке параметр ЧПУ, если да, то ищем по чпу в БД, если нет, вытаскиваем либо главную страницу, либо страницу по ID... То есть получается, что у нас работает два варианта поиска страниц -  по ИД и по ЧПУ, зависит теперь от того, по какой ссылке пройдет юезр, либо по http://yurecnt.ru/?id=0 либо по http://yurecnt.ru/Glavnaya.html

уже отталкиваясь от этой разницы будем искать в БД....

Как же быть с поисковиками? Они не любят клоны страниц... Ведь с точки зрения поисковика эта страница - есть две страницы с одинаковыми данными...

Теперь нам нужен обработчик, который будет смотреть не в адресную строку, а в БД, когда обращаются к странице по ID... Он должен найти (или не найти) в таблице в поле chpu соответствующий параметр, если он есть, то делает редирект с кодом 301 на страницу с http://yurecnt.ru/?id=0 на http://yurecnt.ru/Glavnaya.html и поисковик думает, что у нас не две страницы, а одна, но переехала по новому адресу. Почему нужно делать переадресацию в коде PHP - все потому что на данный момент, у вас может быть уже тысячи страниц на сайте и прописывать для кождой строку в .htaccess будет смерти подобно, здесь же PHP все сделает за вас!

Еще проще с отображением списка страниц - так же модуль, который выводит список страниц, например http://yurecnt.ru/?cat=linux тут можно заметить, что некоторые ссылки идут с ЧПУ, некоторые с ИД, так вот, этот модуль так же идет по списку из бд и смотрит, есть ли что-то в поле chpu и если есть, то формирует ссылку так, если нет, то по ID.... Чтобы он все ссылки формировал по ЧПУ, это надо мне взять, не полениться, зайти на каждую страницу и нажать сохранить...

Аналогичным образом будет необходимо поправить скрипт для генерации sitemap.xml, чтобы роботы обращались напрямую к странице, а не к ее номеру и были переброшены уже дальше...

Это статья - не как конкретный мануал, а как краткий принцип формирования красивых ссылок.

RSS
RSS - Лента новостей
Закладки
Сообщества