ЧПУ, делаем красивые URL на сайте

ЧПУ — человеко-понятные УРЛ. УРЛ, для тех кто не знает, это адрес той или иной страницы на вашем сайте. ЧПУ очень важный элемент, как для SEO, так и для общего восприятия вашего сайта посетителями. Согласитесь, ведь намного удобней запомнить такую ссылку http://phones.com/samsung/s5230/ чем такую  http://phones.com/catalog.php?cat_id=456&phone_id=874.

С помощью таких урлов  в адрес страницы можно вшить любое ключевое слово и оно обязательно будет учтено поисковыми системами. Не смущайтесь, что ключевое слово в УРЛе на латинице, ПС прекрасно понимают транслит. Обратите внимание на эту картинку.

Как видите, некоторые слова  в адресе страницы Яндекс выводит жирным, а значит происходит совпадение с запросом.

Организовать ЧПУ на сайте достаточно просто. Если вы используете какой либо движок, наверняка создатели движка уже сделали возможность включения ЧПУ, если нет, попробуйте поискать специальные плагины. Например в DLE, ЧПУ включается элементарно в основных настройках сайте. На WP это делается тоже достаточно просто. НастройкиПараметры постоянных ссылок, выбрать вариант Название записи, либо вписать произвольный шаблон, у меня на этом блоге например стоит /%category%/%postname%/.  Ах да, не забудьте поставить плагин Rus-to-lat, иначе урлы получатся еще уродливее, на русском в закодированном виде.

Если же вы у вас самописный движок, придется немного постараться.  Возьмем для примера уродливый УРЛ из начала поста  http://phones.com/catalog.php?cat_id=456&phone_id=874 и сделаем из него красивый.

В файле .htaccess создадим правило, которое будет в зависимости от ЧПУ урла, вызывать нужный нам скрипт с нужными параметрами.

RewriteEngine on
RewriteRule ^([^\]+)/([^\]+)/ catalog.php?cat_name=$1&phone_model=$2 [QSA,L]

Первая строка включает работу механизма преобразований. Вторая собственно создает правило. Это обычное регулярное выражение, которое заменит два слова через слеш после домена на  catalog.php?cat_name={первое слово}&phone_model={второе слово}.

В конце указываются флаги. Флаг  QSA  позволяет передавать скрипту дополнительные параметры, помимо категории и модели, после вопросительного знака. Флаг L  указывает механизму остановиться после этого правила и больше ничего н е преобразовывать, что-то типа break в switch’е.

Сам скрипт  catalog.php должен на основе названий уже найти нужную модель в базе даных. Если же по названию искать модель проблематично можно перед названием выводить в ссылке цифру — ID товара. Например   http://phones.com/456-samsung/874-s5230/. Тогда правило в htaccess будет выглядеть так:

RewriteEngine on
RewriteRule ^[0-9]+-[^\]+/[0-9]+-([^\]+)/ catalog.php?cat_id=$1& phone_id =$2 [QSA,L]

Таким образом механизм возьмет из урла  http://phones.com/456-samsung/874-s5230/ айдишники категории и телефона  456 и  874, и передаст их скрипту. Нужно изначально все тщательно продумать и правильно строить ссылки на сайте, ведь в случае их изменения переиндексировать будет достаточно трудоемким занятием. Если же вы собираетесь переделывать уже проиндексированные ссылки, вам следует добавить на эти страницы тег canonical в head страницы. Для нашей страницы это <link rel=»canonical» href=» /samsung/s5230/ «>. Этот тег указывает поисковым системам предпочитаемый адрес страницы и при обнаружении одинакового тега на страницах он их удачно склеивает, не теряя при этом ссылочного веса и всего остального.

Таким способом вам прийдется на каждый раздел сайта, будь то каталог, контент или список пользователей, создавать правило. Так делает DLE. Или можно поступить иначе, как например WordPress. Он перенаправляет любой урл на index.php, а сам движок php скриптами уже парсит его и определяет что выводить.

Ах да. На всякий случай проследите, чтобы у Вас был прописан тег <base href=»http://www.адрес_вашего сайта»>. Это на случай, если у вас на сайте присутствую относительные путя в ссылках, картинках и т.д. Собственно на этом все, чувствую я, что снова объяснил все как-то запутанно :( . Но вы всегда можете задавать вопросы в комментариях к статье.

Похожие записи

Комментариев (4).

  1. Петр

    Все варианты ЧПУ через .htaccess какие нашел перепробовал, ничего не работает.

    Есть
    http://мой сайт/reg/bigpic.html?path=adm_photo&picnum=1

    Надо
    http://мой сайт/adm_photo =1

    Остановися на такой фразе
    RewriteEngine on
    RewriteRule ^([^\]+)/([^\]+)/ reg/bigpic.html?path=adm_photo&picnum=$1 [QSA,L]

    Она выдает 500 ошибку

    Может кто поможет разобраться?

  2. Евгений

    Петр, ошибка 500 в основном возникает, когда установлен apache, а директивы используются из модификации apache-rus.
    Если Вы тестируете свой сайт на localhost, советую почитать про установку apache-rus, если же сайт находится на хостинге, можете задать вопрос администрации хостинга, они либо помогут, либо выбирайте другой хостинг)

  3. Анастасия

    Петр, подскажите, пожалуйста: у меня есть домен и мне нужно сделать 301 редирект с него на другой сайт для отслеживания офлайна. Поэтому на старом сайте хочу прописать utm-метку, и чтобы она не отсекалась при редиректе. И соответственно вопрос:
    1. Как правильно сделать редирект с домена на сайт (где что прописать)?
    2. И что надо прописать ещё, чтобы метки в статистики отображались (где что прописать)?
    Помогите, пожалуйста, разобраться!

  4. Карен

    Здравствуйте! Есть правило для перезаписи урл вида http://domen.com/katalog/?slug=art на http://domen.com/art, но оно почему-то делает перенаправление просто с изменением адресной строки. Вот правило:

    RewriteCond %{HTTP_HOST} ^domen\.com
    RewriteRule ^([a-z]+)$ http://domen.com/katalog/?slug=$1 [QSA,L]

    В чем проблема?

Ваш комментарий

Я не робот