FAQ по ЧПУ (человекопонятные URL) PHP


Оглавление (нажмите, чтобы открыть):

ЧПУ своими руками — как сделать SEF ссылки?

Здравствуйте дорогие гости и постоянные читатели блога о создании сайтов – Site on! В одной из предыдущих статей этого раздела я обещал вам рассказать, как всего за пару минут можно создать собственные ЧПУ ссылки. Несмотря на то, что статья может показаться вам объёмной, а для некоторых и сложной – я надеюсь, когда дочитаете её до конца, вы согласитесь, что в создании ЧПУ действительно нет ничего сверхъестественного.

Что такое ЧПУ?

ЧПУ – это исковерканная англоязычная аббревиатура SEF URL (search engines friendly url). Она обозначает адреса ссылок, которые дружелюбны для поисковых систем. О ЧПУ я также писал в статье про внутреннюю оптимизацию сайта. В русскоязычном варианте SEF URL пишется как ЧПУ – человеко-понятные url. Что всё это значит? Это значит, что адреса ваших ссылок будут иметь осознанный текст, а не технический мусор, за примером можете сходить по ссылке выше.

Какие преимущества дают SEF URL?

Во-первых, очевидно, что ЧПУ ссылки уже в самом своём адресе могут содержать полезную для пользователя информацию. Из такого адреса сразу понятно, о чём будет статья или страница в целом.

Во-вторых, SEO. Такие ссылки приветствуются поисковыми системам, пару лет назад они могли бы дать вам значительный перевес над конкурентами. Сегодня подобные ссылки являются само собой разумеющимися, сейчас редко встретишь сайты с не ЧПУ ссылками, однако они до сих пор есть.

В-третьих, это престиж. Когда я захожу на сайты, где вместо понятного и красивого адреса в ссылках содержится разного рода мусор, а то и засекреченная информация – я задаюсь вопросом: «Вроде бы приличный сайт, но почему разработчики не сделали ЧПУ? Неужели это было так сложно? Может им настолько нет дела до подобных вещей или просто не хватает знаний и навыков?». В общем, для меня такие сайты большая загадка.

В-четвёртых, безопасность. Сайты с ЧПУ ссылками не содержат в своём адресе техническую информацию переданную методом GET (уроки PHP), которую можно запросто использовать для взлома сайта.

И последнее: ЧПУ – как средство навигации. Если ссылка понятна пользователю, то он сам может переходить по разделам сайта, просто редактируя ваш URL. Например:

Если удалить из данной ссылки её последнюю часть (2-sublime-text-2), то мы попадём в раздел, к которому относится данная статья:

В данном случае это раздел «Инструменты». То есть благодаря SEF ссылкам мы можем построить понятную людям и роботам иерархию нашего сайта, что опять-таки будет полезно и для посетителей и для продвижения в поисковых системах.

Недостатки ЧПУ ссылок

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

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

Когда ЧПУ не нужны?

ЧПУ ссылки могут быть и лишними, например, если у вас закрытый корпоративный портал, где вся работа осуществляется только авторизованными пользователями, а для всех остальных, в том числе и для поисковых роботов доступ закрыт.

Также ЧПУ будет излишеством в back-end вашего сайта, то есть в панели администратора.

Что ещё нужно знать о ЧПУ?

Во всех актуальных версиях CMS данная проблема уже решена. Всё что вам нужно, чтобы сделать ЧПУ ссылки, это лишь включить соответствующие настройки в движке вашего сайта.

Но что если мы имеем дело с сайтом на чистом PHP, без CMS, или же хотим разработать свою собственную CMS в которой хотим сделать SEF URL? Для подобных случаев, а также для людей, которые хотят углубиться и понять всю суть преобразований обычной ссылки в ЧПУ, я и написал остальную часть статьи. Если вы читали мои предыдущие статьи, то знаете, что мой блог как раз относится к этой категории, то есть сайтам, написанным с нуля на PHP, без использования готовых CMS.

Ах да, ещё один момент: из личного опыта не советую делать кириллических URL.

Коротко: в чём вся суть?

Пишу для тех, кто совсем не в курсе дел. Везде в наших тегах гиперссылки мы будем указывать ЧПУ адреса:

Суть в том, чтобы из красивого и понятного человеку URL (ЧПУ) сделать на лету URL, который будет полезен разработчику PHP (не ЧПУ):

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

Создание SEF ссылок с помощью mod_rewrite

mod_rewrite – это модуль веб-сервера Apache, предназначенный для перезаписи URL. Естественно, для начала работы вы должны включить этот модуль в настройках Apache, эти настройки находятся в файле httpd.conf, вам нужно будет раскомментировать строку с именем данного модуля. У 99% хостинг-провайдеров он включён, за исключением совсем ужасных хостингов. Кстати говоря, используя Denwer, у меня не получилось нормально настроить собственные ЧПУ, мне не захотелось долго искать в чём именно проблема (мешают собственные редиректы Денвера) и я установил Апач отдельно. Для тех, кто не знает, как установить сервер Апач не используя Денвер, я напишу инструкцию в одной из будущих статей. А здесь мы продолжаем разбирать наши ЧПУ.

Все наши правила преобразований URL записываются в небезызвестный файл .htaccess, который должен лежать в корне нашего сайта.

Для корректной работы mod_rewrite в нём обязательно должна быть написана следующая строка:

Далее подключаем наш модуль rewrite к конкретной папке, то есть к папке, в которой лежит наш .htaccess:

Имеем следующий файл .htaccess:

Правила и условия mod_rewrite

Все правила записываются с помощью команды RewriteRule, после которой ставится пробел и записывается шаблон ваших ЧПУ с помощью регулярных выражений, далее ставится ещё один пробел и указывается строка, в которую мы хотим преобразовать данный шаблон, где $1,$2,…$n – наши переменные. Более подробно о регулярных выражениях вы можете узнать по приведённой выше ссылке, а также далее в данной статье. Давайте рассмотрим пример:

Где ^useful/([a-z]*) – это шаблон ожидаемого url,

а /index.php?category=useful&article=$1 – это то, во что мы его конвертируем, если пришедший URL подошёл под шаблон.

При этом $1 равен тому, что написано в круглых скобках, то есть $1 = [a-z]* Если бы круглые скобки встречались 2 раза, то у нас были бы переменная $1 и $2, если круглые скобки встречаются 3 раза, то переменные $1, $2, $3 и так далее. При этом переменные создаются в том же порядке, как идут круглые скобочки.

Понятно? – молодцы. Непонятно? — идёмте дальше, мы ещё к этому вернёмся. Также хочу обратить ваше внимание на то, что для лучшего понимания статьи, вы уже должны обладать начальными знаниями о PHP, а также о работе с методами GET и POST. Продолжаем.

Для того чтобы наш обработчик, то есть mod_rewrite не срабатывал каждый раз без надобности, мы в RewriteRule указываем шаблон, которому должны соответствовать приходящие URL. Если URL не соответствует шаблону, то mod_rewrite просто не сработает и не преобразует пришедший SEF URL в URL, с которым мы можем работать.

То есть на данном этапе вам важно понять саму суть: в ЧПУ ссылках не передаются параметры, а без параметров мы не можем ничего сделать в PHP с этой ссылкой, поэтому с помощью mod_rewrite мы преобразуем ЧПУ ссылку без параметров в не ЧПУ ссылку с параметрами. Что такое параметры? В примере выше имеем 2 параметра:

Параметр category и параметр article.


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

В шаблонах мы можем использовать символы и символьные классы. Символ точки обозначает абсолютно любой символ.

  • . – любой одиночный символ
  • [redf] – это класс символов. Обозначает наличие одного из перечисленных символов с учётом регистра.
  • [a-z] – класс символов. Обозначает наличие одного из символов в промежутки от a до z, то есть весь английский алфавит.
  • [a-zA-Z] – то же самое, только без учёта регистра, то есть весь алфавит, включая и большие и маленькие буквы.
  • Можно и с цифрами: [0-9]
  • Естественно, всё можно комбинировать: [a-zA-Z0-9]
  • [^rewfad] – класс символов, но со знаком ^ внутри квадратных скобочек обозначает, что шаблон НЕ должен содержать данных символов.
  • site|cite – обозначает альтернативу: подходит site или cite.

Квантификаторы или кванторы

Все предыдущие примеры обозначали один символ (одну единицу), а что если мы хотим показать, что символов из этого промежутка [a-zA-Z] может быть не один, а сколько угодно. Для этого мы должны использовать квантификаторы:

  • ? — 0 или 1 символ из предшествующего текста (класса символов, символа и тд.)
  • * — 0 или любое количество символов из предшествующего текста (n>0)
  • + — 1 или любое количество символов из предшествующего текста (n>1)
  • — ровно n символов, где n – конкретное число.
  • — должно быть ровно 4 символа из предшествующего текста.
  • — 4 или 5 символов
  • — от нуля до 6 символов
  • — от 4 до бесконечности символов

Примером может послужить наша уже известная строчка:

В которой мы применили квантификатор (квантор) звёздочку (*) после класса символов [a-z]. Это значит, что в нашем URL после useful/ могут находиться символы от a до z в любом количестве и, естественно, в любой последовательности, а могут и не быть вовсе. Домен в счёт не берём, он подразумевается сам по себе.

Экранирование

Также при составлении шаблона не стоит забывать и про экранирование. Если вы хотите заключить в класс символов, например, символ точки, то вам нужно её заэкранировать, так как без экранирования точка (служебный символ) обозначает абсолютно любой символ:

Тоже самое касается и квадратных скобочек, они у нас обозначают класс символов, поэтому если в вашем url могут быть квадратные скобочки их нужно заэкранировать:

Ограничение начала и конца строки (маркеры)

Для того чтобы указать начало или конец строки, без учёта домена, используются символы:

  • ^ — начало URL
  • $ — конец URL

То есть в нашем первом примере мы указали, что наш шаблон начинается именно с начала URL, а не откуда угодно (с середины, с конца):

Обращаю ваше внимание на то, что знак ^ внутри квадратных скобок обозначает отрицание, не путайте!

Обратные связи в mod_rewrite

$n – это наша «переменная» в круглых скобках, о них мы уже говорили. Работает для RewriteRule.

%n – то же самое, только в RewriteCond. RewriteCond мы ещё не рассматривали, он у нас впереди.

Итак, если RewriteRule – это наши правила преобразования URL, то RewriteCond – это условие, аналог if в PHP. RewriteCond нужно в ситуациях, когда вам необходимо выполнить URL преобразование (RewriteRule) только при выполнении какого-то условия.

У сервера есть свои собственные переменные, которые мы можем использовать в наших условиях RewriteCond:

Синтаксис применения серверных переменных таков:

Давайте составим наше первое условие:

Если посетитель зашёл с браузера Mozilla Firefox, то выполняем следующее правило. Как видите, в отличие от PHP мы не используем фигурные скобки для обрамления нашего правила, которое выполнится, если условие TRUE.

RewriteCond позволяет использовать операторы сравнения: (больше), = (равно). Также есть специальные значения, например:

  • -d (является ли каталогом)
  • -f (является ли файлом)
  • -s (является ли файлом с ненулевым размером)
  • ! – отрицание.

Флаги

  • nocase|NC – можно писать либо nocase, либо NC, это одно и то же, обозначает регистро-независмость. То есть мы можем больше не писать:

Вместо этого написать так:

  • ornext|OR – если это, либо следующее условие TRUE, то выполняем RewriteRule. Пример:
  • Last|L – последнее правило. Если правило применилось, то правила, расположенные ниже по коду, не сработают.

  • next|N – некий аналог continue. Если правило применилось, заставляет отыгрывать все правила с самого начала, но при этом с уже преобразованной строкой.
  • redirect|R – редирект. По умолчанию 302. Можно указать другой код редиректа, например:

    forb > Если нужно поставить одновременно несколько флагов, ставим их через запятую, например:

    Как вы уже могли догадаться, mod_rewrite можно использовать не только для ЧПУ, но и для многих других интересный целей, например, клоакинга – это метод чёрного SEO, когда по одному и тому же адресу посетителям отдаётся одна страница, а поисковым роботам совершенно другая. Ну и под конец статьи, я покажу вам живой пример использования всего написанного выше и как же это всё работает взаимодействуя с нашим PHP.

    Живой пример использования mod_rewrite

    Итак, вот какой вид имеет мой файл .htaccess:

    Что происходит в этом ужасе? Для начала я проверяю, не набрал ли человек старой закалки мой адрес с www, если набрал, то перенаправляю его на тот же адрес, только без www. Зачем именно это нужно я напишу в одной из следующих статей, если коротко, то для SEO. После перенаправления с www на без www у нас заново считался наш файл .htaccess, поэтому всё начинается снова: проверяем, не пришёл ли нам УРЛ с www, в этот раз — нет. Далее (второй RewriteCond) мы проверяем, если наш УРЛ действительно без www, то делаем преобразования, а именно: заносим весь URL (без имени домена) в параметр article.

    На этом работа .htaccess завершена и на сцену выходит PHP. Следующий код размещён в index.php:

    О том, как работает конструкция switch, я подробно писал в статье по указанной ссылке. Вот и всё, дамы и господа! Наконец-то наша статья подошла к логическому завершению, и теперь вы сможете попрактиковать полученные знания. Я прощаюсь с вами до выхода новой статьи, а напоследок хочу привести интересную цитату:

    «Несмотря на тонны примеров и документацию, mod_rewrite это Вуду. Чертовски клёвый Вуду, но все-таки Вуду.»

    Разработка CMS с нуля. Часть 4: Семантический адрес или ЧПУ

    Добрый день, читатель! Или вечер… не важно, главное что ты заглянул) Сегодня мы продолжим разрабатывать нашу CMS и реализуем такую штуку, как ЧПУ. О том что это, зачем нужно и как работает — все это разберем и на выходе получим новый модуль для нашей системы. Полны вперед!

    Итак, для начала, что же такое ЧПУ? Нет, это не «числовое программное управление», как некоторые могли подумать (хотя они, в общем-то, и правы), а СЕМАНТИЧЕСКИЙ адрес. Почему тогда ЧПУ? Просто кто-то когда-то подумал, что «семантический адрес сайта» звучит как-то сложно, и решил назвать «ЧеловекоПонятный Урл». У этого термина есть еще несколько альтернативных названий, но ЧПУ — самый распространенный.

    Теперь немного о том, в чем суть использования ЧПУ.
    Несемантический адрес выглядит примерно вот так:

    Теперь посмотрите на тот же адрес, но уже с семантическим видом:

    Думаю такой адрес вам больше понравилось бы видеть в своей адресной строке (хотя например мне, по большому счету, плевать как выглядят ссылки на том или ином сайте, если конечно он не представляет для меня технический интерес). Как видно из примеров, при использовании ЧПУ длинна ссылки значительно сокращается (в основном, но бывают исключения), сам адрес выглядит более эстетично и напоминает обычную структуру файловой системы. Такой вид позволяет понимать, чего ожидать от этой страницы — в нашем случае мы просматриваем все новости на 4й странице. в качестве бонуса уходит имя исполняемого файла и имена переменных, которые он использует — какая-никакая, а защита.

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

    Итак, задачи на сегодня:

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

    Пожалуй начнем. Для начала, мы должны создать файл с именем .htaccess, да, именно такое имя, по сути имени нет, только расширение. Это файл конфигурации веб-сервера для конкретного домена. Он нам нужен чтобы описать правило перезаписи, которое послужит основой для работы нашего модуля. Итак, в созданный в корне сайта файл .htaccess пишем следующее:

    простое правило, думаю оно вполне понятно. Теперь, когда веб-сервер работает как нужно нам, мы можем приступать к написанию модуля ЧПУ. Начнем конечно же с, уже стандартной проверки и объявления класса, назовем его surl (Semantic URL) и заполним его основным кодом, который требуется для работы с нашим реестром:

    этот код нам знаком, понятен и является минимальным каркасом для любого модуля нашей системы. Думаю на этом этапе все понятно. Теперь приступим к функции, которая будет выполнять обработку адреса.
    Я достаточно долго думал, смотрел кучу реализаций и комбинировал их так или иначе, но то, что получалось не решало всех поставленных задач, в частности — безопасного включения/отключения модуля, без влияния на систему и поддержку ссылок без семантики при включенных ЧПУ. Взяв самый более-менее годный код из того, что у меня получалось я решил, что его можно допилить до нужного результата. У меня вроде как получилось �� Я подумал, что имеет смысл несколько стандартизировать сам семантический УРЛ и пришел к следующему решению: все адреса нашей системы будут иметь две обязательных части и список параметров, которые могут и отсутствовать, в зависимости от потребностей того или иного скрипта.
    Чтоб было понятней, урл будет иметь следующий вид:

    Возможно, скорее даже точно, это не самый лучший вариант, но для основной работы самих ЧПУ нам это вполне подходит. Параметр МОДУЛЬ — это не те модули, которые мы сейчас разрабатываем. Это модули внешнего функционала, например модуль новостей или регистрации пользователя. Чтоб вы не путались в будущем. А теперь, как я это реализовал на PHP, поехали.

    После объявления переменой с именем класса пишем одну единственную функцию — parseUrl, которая принимает на вход лишь один параметр $type, сообщающий о состоянии ЧПУ: 1 — включен, 0 — выключен.Добавим его чуть позже, а пока начинаем писать саму функцию.

    Объявляем функцию и сразу создаем массив, который будет возвращать наша функция с набором наших данных.

    Все, прелюдия позади — начинаем серьезные вещи делать. Т.к. мы принимаем в функцию параметр говорящий нам о том, какую ссылку ему предстоит обработать, то начнем с самого интересного — семантического урл, итак:

    Если запрашиваемый адрес отличен от корня сайта, парсим его кусок с параметрами и разбиваем по знаку косой черты (слеш). Теперь нам нужно проверить количество параметров в семантическом адресе, их у нас должно быть обязательно четное количество. Минимум — два параметра МОДУЛЬ и ДЕЙСТВИЕ + неограниченное количество пар ПАРАМЕТР и ЗНАЧЕНИЕ. То есть, если количество данных в адресе нечетно, то это значит о том что адрес не верный, а так же еще и то, что запрос возможно идет по несемантическому адресу. Этот момент поясню: чуть выше, после парсинга адреса, мы разбивали его на части и записывали в массив. Разбивали мы по слешу, но что если адрес запрашивается через обычные $_GET параметры? В таком случае в массиве после разбивки мы получим одну запись, например:

    да, тут есть два необходимых параметра МОДУЛЬ и ДЕЙСТВИЕ, но т.к. они не в семантическом виде, наша операция разбивки найдет только один слеш — после имени домена — и все кинет в одну ячейку массива. Надеюсь мне удалось донести свою мысль. Если нет — пишите в комменты, помогу разобраться; а пока продолжим. У нас получается всего одна ячейка, 1 — число нечетное, а значит можно попробовать распарсить данные альтернативным методом, при условии что есть что парсить.

    Если после целочисленного деления на 2 мы получили остаток, отличный от нуля, то значит количество параметров нечетное, разбиваем то, что есть в массиве по знаку амперсанд (&) и, если в массиве что-то есть, мы получим ассоциативный массив вида ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ. Мы договорились что обязательно должны присутствовать 2 переменные, значит если их нет, то и нет смысла обрабатывать этот запрос.

    Так, проверили, все есть, значит записываем значения в соответствующие ячейки и удаляем эти данные из массива $_GET. После удаления параметров МОДУЛЬ и ДЕЙСТВИЕ, все, что остается — это список параметров для запрашиваемой страницы. Их тоже записываем в наш массив данных но в отдельную ячейку. Ну а если запрос не проходит наши проверки, то и не паримся его обрабатывать.

    С альтернативным методом все, теперь возвращаемся к ЧПУ. Если запрос имеет четное количество параметров то первый из них — это МОДУЛЬ, а второй — ДЕЙСТВИЕ. Просто вынимаем их по очереди, удаляя из исходного массива. После этого, в нашем исходном массиве, если что-то и осталось, то это наши параметры для конкретной страницы. Записываем их тоже в наш конечный массив. Все это выглядит следующим образом:

    Осталось только закрыть самую первую операцию if в нашей функции и вернуть полученный массив с данными:

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

    Ну как? Говорю же, тот же самый код �� Разница лишь в том, что мы не пытаемся разбить строку по слешам, а сразу разбиваем по амперсанду, вот и все. Вот теперь модуль работы с ЧПУ можно назвать готовым, можно приступать к проверкам, но для начала давайте добавим одну переменную в наш с вами конфиг:

    Эта переменная будет отвечать у нас за режим работы модуля: 1 — модуль пытается обработать ЧПУ, 0 — обрабатываются обычный, несемантический адрес (хотя по сути, если вы заметили из кода — функция схавает любое число или символ, отличный от единицы, но давайте договоримся использовать 0).

    Теперь приступаем к тестам. Открываем наш файл index.php и подключаем новоиспеченный модуль к нашему реестру, сразу после подключения модуля базы данных:

    Теперь можем проверить как принял наш реестр нового бойца — зайдем на localhost, или другой локальный домен (если вы меняли настройки сервера). Если все пошло как надо, то в списке подключенных модулей мы увидим модуль с именем «ЧПУ». Есть? Замечательно! Теперь проверим непосредственно работу модуля surl . В самый конец файла index.php пишем следующий код:

    воспользовавшись нашей функцией parseUrl из модуля surl мы получаем массив с данными из URL-запроса. Сохраните файл index.php и откройте локальный домен. Данных никаких нет — и после строки «Проверка работы ЧПУ:» вы ничего не увидите. А теперь попробуйте вбить, например такой адрес:


    Ну как?) Теперь попробуем альтернативный парсер и запросим ту же страницу, но в формате get:

    Если все сделано правильно, то класс отработает без ошибок и при запросе обоих ссылок вы увидите, что функция правильно обрабатывает как ЧПУ, так и простые url с get-параметрами. Если отключить ЧПУ в конфге, то будет срабатывать сразу альтернативный парсер.
    Итак, что же в итоге:
    модуль surl понимает как человекопонятные УРЛы, так и классические ссылки с get-параметрами одинаково; можно отключить обработку ЧПУ и работать только с get-запросами — это не повлияет на логику нашей системы. Поставленные в начале статьи задачи выполнены — я считаю это очередной успешный шаг, давайте себя с этим поздравим ;-P

    Конечно, этим все не ограничется. Мы научили нашу CMS только понимать семантические ссылки. Нужен еще как минимум какой-то обработчик, который приняв данные МОДУЛЬ/ДЕЙСТВИЕ/ПАРАМЕТРЫ подгрузит нужный модуль, который запустит необходимое действие с полученными параметрами. Вдобавок, я хочу реализовать так называемые алиасы статичных (не обязательно?) страниц.

    По задумке каждая страница будет иметь алиас и храниться он будет в соответствующей таблице БД, а доступ к ней будет возможен как по алиасу, так и по обычной ссылке с get-параметрами. Уф, что-то я вперед уже забегаю, пора остановиться. Кстати, было бы интересно послушать ваши варианты подобной реализации в комментариях, не стесняйтесь. А пока, на этом закончим сегодня. Удачи и до встречи в следующих материалах!

    FAQ по ЧПУ (человекопонятные URL) PHP

    В большинстве современных CMS, где с помощью плагинов, а где и в самом ядре системы, реализована поддержка ЧПУ – человекопонятных адресов. Если вы посмотрите на адресную строку моего блога, то увидите что-то типа этого

    А действительно, зачем это делать? Далеко не каждый человек вообще обращает внимание на адресную строку, тем более пытается там что-то разобрать. Дадим слово гуглу:

    Структура URL сайта должна быть предельно простой. Попробуйте организовать контент так, чтобы URL имели логическую структуру и были понятны для человека (по возможности используйте слова, а не идентификаторы, состоящие из множества цифр). Например, при поиске информации об авиации URL типа http://ru.wikipedia.org/wiki/aviacia поможет оценить релевантность ссылки. Гораздо сложнее привлечь внимание пользователей с помощью URL-адреса типа http://www.example.com/index.php? > То есть, применительно к нашему блогу разбиваем url на части:

    • https:// — защищенный протокол передачи данных;
    • upread.ru – домен, адрес блога;
    • blog – раздел, показывающий, что это блог;
    • notes – раздел, показывающий, что это заметки;
    • chpu-s-pomoshhyu-php-dlya-chajnikov – название заметки, которую, собственного говоря, вы и читаете.

    Как сделать?

    Однако, если в КМС есть уже поддержка ЧПУ, транслитерация и другие инструменты, то, например, на моем блоге этого нет – у меня самописная CMS. Как же реализовано? Все просто, ниже покажу как.

    Сначала небольшая ремарка. Если у вас есть какой-то опыт в сайтостроении, но вы не умеете делать ЧПУ с помощью .htaccess и php, то можете подумать, что я создал три каталога, а в них поместил файл index.html. Действительно, в принципе можно сделать каталоги blog, notes и nc-php и в последний положить индексный файл – и это будет работать! Но в реальности никто так не делает, все работают с .htaccess и php.

    Итак, для начала нам надо переправить все запросы, которые не являются реальными файлами и каталогами в какой-то определенный файл, чаще всего это корень сайта, но никто вам не мешает создать и любой другой. Например, job.php. Добавьте в ваш .htaccess следующие строки:

    Теперь нам надо работать уже с PHP. Я снова возьму в пример свой сайт. Каждый материал на моем блоге доступен по адресу upread/art.php? >
    Однако правильнее будет создать в базе данных отдельное поле для ЧПУ каждой записи и сравнивать перед выводом. Кстати, именно так реализован вывод, к примеру, в одной из самых распространенных CMS – WordPress. На картинке видно, что ЧПУ записан в поле post_name, а тот, из которого берется id материала — guid.

    После того, как вы создали ЧПУ на своем сайте, вы можете увидеть, что у вас слетели стили. Почему так происходит? Все просто: если прописаны относительные пути к стилям скриптам, то браузер и пытается их загрузить из текущей директории. А не находя, естественно, выдает ошибку 404. Решается проблема просто: добавляем тэг base. Например, для моего блога он выглядит таким образом:

    Вот так просто может создать свой человекопонятный урл даже самый чайник в сайтостроении. Если вам что-то непонятно или необходимо настроить систему URL на вашем сайте, то пишите мне – за небольшое вознаграждение я вам помогу.

    Человекопонятный URL. Стоит ли тратить на него время

    931 просмотров всего, 1 просмотров сегодня

    Мы уже не раз говорили о том, как много элементов нужно учесть при оптимизации сайтов. Один из них — ЧПУ — человекопонятный URL. Изначально термин связан с английским Search Engines Friendly URL. Из расшифровки видно, что здесь изначально речь идет о дружественности поисковым системам, а не пользователям. Поэтому их нельзя назвать одинаковыми понятиями. Хотя, учитывая, что поисковики стали больше ориентироваться на поведение пользователей, человекопонятный урл сейчас выходит на первый план.

    Из этой статьи вы узнаете, какую пользу могут принести человекопонятные урлы и как правильно их составлять.

    Преимущества ЧПУ

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

    Человекопонятные урлы — это набор слов, описывающих содержимое страницы.

    Это URL одной из статей в нашем блоге. Еще не переходя по ссылке, вы можете представить, о чем мы собрались вам поведать.

    Как было сказано выше, ЧПУ может стать важным элементом SEO. Главным преимуществом человекопонятного URL становится возможность вставлять в него ключевые слова.

    Рассмотрим другие достоинства такого подхода к прописыванию ссылок:

    • раскрывают суть страницы;
    • легко запоминаются;
    • удобно диктовать или записывать на слух;
    • помогают в навигации (позволяют понять уровень вложенности страницы, легко перейти на нужный уровень);
    • безопасность сайта (информация, которую можно использовать для взлома ресурса, не выставляется на всеобщее обозрение).

    Важно прописать человекопонятные урлы еще на этапе создания ресурса. Откладывать это в долгий ящик нельзя потому, что со временем если вы решите заменить уже имеющиеся на user friendly, это с высокой вероятностью негативно скажется на ранжировании сайта. Если вам все же необходимо произвести замену, тогда обновите старую запись с URL. Это позволит уменьшить потери при индексировании.

    Правила создания

    Длина URL. Тенденция такова, что размер урла должен быть небольшим, хотя ничего такого не указано поисковыми системами. Оптимальным считается использование не более пяти слов или не более 80 знаков. Если количество знаков превысит 90, ссылка будет автоматически обрезана поисковиком. Наиболее подходящее количество слов получено на основе маркетинговых исследований, которые показали, что на короткие URL пользователи кликают примерно в два раза чаще.

    Уровни вложенности.Их стоит сократить вместе с длиной URL.

    Структура

    Главная
    Главная +раздел
    Главная + раздел + подраздел
    Главная + раздел + подраздел + страница

    Использование специальных знаков. В длинных ссылках часто используются хеши, что позволяет пользователю быстро перейти в интересующий его раздел. Однако, как показала практика такого гиганта, как Amazon, отказ от хешей только улучшил отношение поисковиков к сайту и повысил лояльность пользователей.

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

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

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

    https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA%D0%BE%D0%B2%D0%B0%D1
    %8F_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F

    Хотя изначально в браузере URL смотрелся весьма приемлемо.


    Обратите внимание, что Википедия в своих URL все же смешивает кириллицу и латиницу.

    Латиница подразумевает перевод русских слов на английский. Некоторые слова стали уже привычными для пользователей, например, news, contacts, phone. При переводе ссылок обязательно нужно учитывать момент, что они должны быть понятны широкой аудитории.

    Транслитерация является промежуточным вариантом и чаще всего используется для названия статей. Благо, самостоятельно производить замену букв не нужно. Осуществить процедуру перевода кириллических символов в латинские можно с помощью специализированных сервисов. Один из таких ресурсов http://seolinks.webhb.ru/ . Кроме того, если вы используете WordPress, то можете установить плагин RusToLat или CyrToLat, не требующий дополнительных настроек.

    Структура

    Для разных сайтов вы можете использовать разную структуру ЧПУ. Во многом состав человекопонятного урла связан с типом ресурса.

    /pagename/
    подойдет для статических страниц.

    /id/title
    чаще применяется для динамических страниц, но также может быть использован и для статических.

    /category/subcategory/title
    подойдет для Интернет-магазинов с большим количеством товаров, блогов, информационных площадок.

    А что делать, если вам необходимо сделать ЧПУ для мультиязычного сайта?

    В этом случае все будет зависеть от размещения контента: будет он расположен на домене или поддоменах. Если несколько языковых версий находятся на одном домене, будет правильнее в начале ссылки отметить язык. Например, указать de, en.
    В конце ссылки может стоять .html или этого может не быть. Этот момент считается некритичным. Но, кто знает, быть может именно эта приписка позволяет поисковикам понимать, что перед ними страница и ее нужно сканировать.

    Кстати, человекопонятные URL должны создаваться таким образом, чтобы, глядя на URL, пользователь мог понять структуру сайта.

    Пишем ЧПУ

    Все слова должны вноситься в нижнем регистре. Остается еще вопрос с тем, нужно ли их разделять и какие знаки для этого использовать. В ЧПУ могут быть применены дефисы или подчеркивания. Пробелы использовать не рекомендуется. Стоит выбрать один знак для урлов и использовать в дальнейшем только его, т.е. синтаксис должен быть единым для всего проекта.

    Если вы сомневаетесь, что выбрать — дефис или нижнее подчеркивание, отдайте предпочтение первому. Это будет лучше воспринято и поисковыми роботами, и пользователями. Google и Яндекс прописывают в документах, что предпочтительным символом является дефис. А еще подумайте об аудитории — набрать дефис проще и быстрее, чем нижнее подчеркивание.

    Одной из распространенных ошибок среди начинающих сеошников является использование нескольких ключевых слов в URL. В итоге ресурс расценивается как спамный и подпадает под фильтры поисковиков. В этом плане стоит подходить к созданию ЧПУ так же, как и к тегу Title — аккуратно и взвешенно.

    Для человекопонятного URL с позиций SEO оптимален один высокочастотный ключ, который и приведет аудиторию на ваш сайт.
    Если у вас получился длинный урл, вы можете сократить его за счет исключения стоп-слов. Напомним, что с точки зрения поисковиков они не несут никакого смысла. К стоп-словам относятся местоимения, союзы, предлоги, частицы, междометия. Сюда же входят и цифры. Однако в случае если вы даете ссылку на страницу, где описывается событие, привязанное к дате, цифры вполне допустимы.

    Еще один важный момент — увлекшись созданием ЧПУ не забывайте о том, что поисковики не любят длинные редиректы. В этом случае пользователи ведут себя точно так же. Чем больше переходов нужно сделать, тем меньше интерес к содержимому страницы. Создавая сложные переходы, просто задайте себе вопрос: “Захочет ли кто-то пройти ваш квест?”

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

    Техническая сторона

    ЧПУ могут быть короткими и длинными.

    • Короткие формируются от корня. Например, сразу же за названием сайта идет название товара.
    • Длинные представляют собой весь путь от главной страницы к указанному блоку.

    Процесс создания человекопонятных урлов предельно упрощен. В CMS возможно задать ЧПУ для самых разных модулей, например, товаров.

    Сделать это возможно несколькими способами:

    Если вы вручную не укажете ЧПУ, система самостоятельно подставит транслитерированное название страницы. Специалисту предоставляется возможность выбрать тип: будут урлы короткими или длинными.

    Рассмотрим на примере WordPress. Здесь необходимо открыть: Параметры — Постоянные ссылки, и перед вами появятся шаблоны, которые можно использовать для создания ссылок. Также есть возможность создать собственный. Для этого используйте пункт “Произвольно”.

    Если при автоматической генерации некоторые символы могут обрезаться, то здесь все будет в точности так, как вы впишете. Кроме того, при ручном вводе можно не обращать внимание на то, настроена ваша система на короткие или длинные ЧПУ. Все опять же будет так, как вы введете.

    • Импорт товаров при создании Интернет-магазинов.

    Если вы не указываете URL для перемещаемых объектов, система проведет транслитерацию. Если вы указываете длинный ЧПУ, то именно он и будет использован системой, независимо от начальных настроек. Аналогично и с короткими урлами.

    Чек-лист

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

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

    Дата: 09:03 29.04.2020

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

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

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

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


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

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

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

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

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

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

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

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

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

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

    нажимаем Rewrite URL

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

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

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

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

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

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

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

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

    У меня если ни чего не задано в адресной строке кроме >

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

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

    Теперь нам нужен обработчик, который будет смотреть не в адресную строку, а в БД, когда обращаются к странице по >

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

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

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

    ЧПУ (человеко понятный урл)

    С помощью ЧПУ легко определять уровень вложенности документа и каталога. Например, site/razdel1/soveti/kak-kupit-auto — говорит нам о том, что статья «как купить авто» находится в разделе 1 в подразделе советы.

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

    Жаль, но почти все CMS генерируют урлы по какому-то своему принципу. Типичный пример автоматически сгенерированного адреса имеет вид GET-запроса: » site/?r=razdel1&p=soveti&article=kak-kupit-slona «. Такой адрес понятен разработчикам движка сайта, но не конечному пользователю. Кстати, этот пример ещё не так уж и плох, т.к. он содержит в себе ключевые слова, а очень часто бывает так, что вместо понятных слов URL может содержать лишь id разделов в виде цифр. Минусом такого адреса ещё является его избыточная длина.

    Продумывать всю структуру сайта и его каталогов нужно ещё при начале разработки. Менять все адреса на существующем сайте — работа очень не приятная, поскольку будет необходимо проставить с каждой страницы редирект 301 на страницу с ЧПУ. В такой работе потеря каких-то страниц или ошибочные адреса просто неизбежны. Поисковой машине придется заново индексировать весь сайт.

    Как лучше писать ЧПУ

    На последок поговорим о том, на каком языке стоит писать ЧПУ. Здесь нужно будет ответить на 2 вопроса: писать ли адрес сайта на латинице и при этом использовать транслит или английские слова.

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

    2. Я советую использовать транслит вместо английских слов. Это связано с тем, что если Вы напишите название статьи по-английски, то это не придаст Вашему сайту никакого бонуса в его продвижении. Например, «how-sell-auto» — плохой вариант. Так же не стоит забывать, что такой адрес Вы создаете ещё и для пользователя, который может не знать многих английских слов.

    3. Используйте тире вместо нижних подчеркиваний в длинных адресах страницы. Например, лучше использовать «kak-sdelat-sayt», чем «kak_sdelat_sayt».

    Подведем итоги: ЧПУ нужно делать в транслите на латинице как для пользователя, так и для продвижения сайта.

    FAQ по ЧПУ (человекопонятные URL) PHP

    ЧПУ — это аббревиатура от словосочетания «Человеко-понятные УРЛы», которая является вольным переводом английского термина «Search Engine Friendly URLs», то есть, дружественные и красивые адреса.

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


    Как же выглядит ЧПУ адрес?

    Рассмотрим стандартные адреса страниц, которые присутствуют на большинстве сайтов:

    Теперь рассмотрим примеры страниц с человеко-понятными адресами:

    Даже при беглом сравнении видно, что адреса с ЧПУ менее громоздки и более привлекательны.

    Рассмотрим основные преимущества ЧПУ адресов:

    • В адресе можно использовать ключевые слова, что положительно влияет на ранжирование страницы;
    • Естественные ссылки в виде адресов страниц также передают вес по необходимым ключевым словам, содержащимся в ЧПУ;
    • Улучшается кликабельность сниппетов в выдаче, т.к. ключевые слова подсвечиваются в поиске и привлекают больше внимания;
    • Облегчает запоминание адресов страниц;
    • Помогает узнать, о чем страница еще до перехода по ссылке, что уменьшает показатель отказа и помогает привлекать более целевых посетителей;
    • Упрощает навигацию по сайту. Пользователь сразу узнает, в каком разделе ресурса он находится и может быстро выполнить переход на уровень выше.
    • ЧПУ снижает вероятность появление внутренних дублей;
    • Упрощают работу с веб-аналитикой;

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

    Важные моменты при использовании ЧПУ

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

    Организация структуры ЧПУ-адресов

    На организацию структуры ЧПУ-адресов оказывает влияние тип сайта. Адреса вида /pagename/ подходит для разделов: «Контакты», «Информация», «Доставка» и прочих статических страниц в контент-проектах и интернет-магазинах. Применим на любых типах сайта.

    Адреса вида /pagename.html также подойдёт для статических страниц сайтов любых типов, но ещё и может обозначать различные рубрики. Например, «Мебель», «Отзывы», «Интервью» в интернет-магазинах либо в контент-проектах.

    Следующий шаблон /id/title используется в основном для динамических страниц сайтов, имеющих единственную рубрику, но вполне применим и для статических страниц обзорного или новостного ресурса. Примером может служить: /2442/raskrutka-saitov. Правда у ID записи есть один минус – человеку его сложно запомнить. Зато в новостных проектах ID позволяет уникализировать адрес, закрепив его за конкретной статьей. Хотя в ЧПУ-адресах рекомендуется для простоты их передачи и запоминания ID убирать, а при необходимости, чтобы сделать заголовок уникальным, следует добавить к нему порядковый номер.

    Если в проекте важна актуальность материала, то целесообразно в ЧПУ-адресах проставлять даты. Шаблон вида: /year/month/day/title.html сразу поможет отфильтровать новые данные по точной дате или, наоборот, быстро получить доступ в поисковике к статьям прошлых лет. Данный шаблон идеально подходит не только для новостных ресурсов, но и для блогов.

    В интернет-магазинах, новостных проектах или дневниках часто применяется шаблон, в котором отображена навигационная цепочка и определена иерархия объектов. Например, /category/subcategory/title облегчит жизнь и веб-мастеру во время закрепления адресов за статьями или товарами, и пользователю при навигации.

    Итак, лучше всего при проектировании выбрать сначала основные рубрики сайта, затем определить их подрубрики и, наконец, элементы этих подрубрик. Организация ЧПУ строится так, чтобы по адресу становилась ясна структура сайта. В городском портале, например, приемлемы рубрики: /news/, /poster/, /job/, /sport/, /gallery/, /forum/. Каждый раздел целесообразно детализировать: /sport/football/ или /sport/figure-skating/luzniki. Те же рекомендации относятся к сайтам, имеющим иерархическую структуру.

    Латиница, кириллица и транслит?

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

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

    Латинское ЧПУ подходит для статических страниц, обозначений новостных рубрик или разделов «Контакты», по той простой причине, что пользователи уже привыкли к обозначениям /news/ или /contacts/. Для названия статей латиницу применяют гораздо реже.

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

    Длина ЧПУ адреса

    В плане юзабилити из-за трудности запоминания длинные ЧПУ-адреса не удобны. К тому же они часто обрезаются во время вставки ссылки в социальных сетях.

    Оптимальная длина ЧПУ должна составлять от 60 до 80 символов, и, естественно, чем меньше она будет, тем удобнее оперировать таким адресом. Таким образом, не стоит в ЧПУ отображать всю структуру сайта (например, подкатегории товара в интернет-магазине). Достаточно ограничиться первой и последней или одной из подкатегорий.

    Разделение слов в ЧПУ

    В ЧПУ не принято использовать пробелы для связи слов, обычно для этих целе используется дефис (-) или нижнее подчеркивание (_). Это позволяет без труда распознавать адреса страниц как пользователям, там и поисковым системам.

    ЧПУ для мультиязычного сайта

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

    ЧПУ для видео и картинок

    ЧПУ-адреса изображений или видео используются не настолько активно, как для создания страниц. К тому же по имени папки может найти изображение только поисковая система Google, поэтому если планируется получать на сайт трафик с поиска по видео или каких-либо других изображений, то важно лишь их название, а не сам путь, хранящий видео-файл. Поэтому, например, prodvigenie.jpg вместо ряда цифр со значком подчеркивания между ними будет вполне достаточно.

    Ошибки при применении ЧПУ

    Итак, попробуем подытожить, какие ошибки допускаются чаще всего при использовании ЧПУ-адресов:

    • пробелы и служебные символы.
    • слишком длинные ЧПУ-адреса.
    • цифровые значения в ЧПУ-адресе.
    • использование не значимых слов. В качестве примера можно отметить url-адреса, содержащие /category/ или /page/ данные слова не имеют особого значения, но увеличивают общую длину адреса.

    Итак, в оптимальном ЧПУ-адресе содержатся однотипные символы на кириллице, латинице или транслитерации, а среди разделяющих знаков нет ни кавычек, ни пробелов, ни запятых, ни прочих служебных символов.

    Функция ЧПУ на php. Создание человеческих ссылок в постах

    Доброго времени суток дорогой читатель! Добро пожаловать на мой блог! Сегодня мы продолжим работу над циклом «Создать блог с нуля». Нам предстоит задать фундамент модуля ЧПУ, если быть точнее то нам понадобится php функция, которая по имени страницы определит нам id в таблице базе данных. Но прежде чем мы приступим к написанию функции нам необходимо будет создать и настроить файл htaccess. А так же отредактировать нашу таблицу в базе данных, создать новую колонку, в которой мы будем хранить имена страниц.

    На файл htaccess мы сильно отвлекаться не будем, его работа не так уж и сложна, тем более если Вы знакомы с регулярными выражениями в php. Вот, что касается самого модуля ЧПУ, то он представлен в виде двух файлов ( ну можно и в один, но у меня почему то получилось два =) ) и «сети условий» по всему движку. Не пугайтесь, под термином «сети условий», я подразумеваю тот геморрой с автоматической смены ссылок по всему движку ! Сегодня мы займемся лишь фундаментом, и добьемся того что бы пост, на странице нашего блога, был доступен по адресу с человеко-понятной ссылкой

    Цели я указал в анонсе, так что сейчас пару слов для новоприбывших, и приступим =)


    Для тех кто на блоге в первые

    Если Вы на блоге в первый раз, то эта маленькая заметка именно для Вас! Пускай тема ЧПУ обширная и применима к любому проекту, Вам, именно в материале на этой странице, будет очень сложно выявить что-то полезное для себя, по причине того, что этот пост, как и большинство на моем блоге, является частью цикла статей «Создать блог с нуля». Цикл ориентирован на аудиторию которая хочет на практике научится программировать на php. Если Вы из таких, то добро пожаловать! Переходите по ссылке, что я дал Вам выше и приступайте к изучению изложенного мной материала

    Если Вы собираетесь задержаться на моем блоге, то подпишитесь на RSS ленту блога через ридер, или же по почте

    Новая колонка в таблице базы данных

    Так как у нас пока нет модуля который автоматически, из заголовков, делал бы нам имена ссылок, то придется не только создать колонку но и заполнить ее каким-нить именем. Только учтите, что имя должно состоять из маленьких букв английского алфавита , плюс к этому не должно быть пробелов, вместо них ставим тире ( — ). Это условие обязательно, ибо скрипт проверки будет отсеивать не правильные адреса, перекидывая пользователя на главную страницу блога.

    Заходим в структуры таблицы blog, и после id создаем новую колонку

    Заполняем поля приблизительно вот так ( имя поля nameurl )

    Теперь, необходимо заполнить новую колонку. У меня лишь одна запись в базе данных, поэтому для меня заполнение новой колонки не является проблемой =)

    В конце имени необходим поставить «.html». Если у Вас в планах не использовать такое окончание у Ваших страниц, то можете не писать, только в этом случае Вам придется немного переделать файл htaccess, а именно убрать расширение там.

    Я для тестовой странице использовал вот такое имя: dobro-pozhalovat.html

    Ну чтож, с этой задачей мы справились, теперь приступим к самому файл htaccess

    Создаем файл htaccess

    Создавать лучше всего с помощью программы Notepad++, ибо в некоторых случаях виндоус ругается, что у файла нет имени, ведь имени и в правду нет =) только расширение .htaccess

    На всякий случай я скину Вам файл, вот он. Этот файл необходимо поместить в корень нашего блога

    Содержимое файла следующее:

    Первая строчка включает возможность перенаправления с динамических ссылок на ЧПУ. Вторая отвечает за ссылки на посты. То есть если ссылка будет вот такого вида

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

    Третья строчка отвечает за ссылки к категориям

    Ну и последняя строчка отвечает за ссылку ведущая на форму обратной связи

    Обратите внимание что регулярное выражение находится в скобках, если Вы знакомы с регулярками, то прекрасно знаете, что скобки это сохранение . Вопрос, куда переносятся сохраненные данные? Ответ: В переменную 1. Да, именно 1 (единица).

    Если Вам нужны ЧПУ без .html то редактируйте регулярное выражение в файле htaccess, на такой вид ссылок, который Вам нужен!

    Особо останавливаться тут не будем, я многое тут не знаю, поэтому долго разглагольствовать на эту тему не имею право, единственное что бы я еще добавил, это пару слов о флаге [L]. Я может и ошибаюсь, но как я понял этот флаг останавливает проверки, что идут ниже, это что-то типа break (прерывание работы всего цикла) у циклов.

    Под итожу то что написано в файле htaccess: Условия, для каждого вида станиц которые есть у нашего движка, а именно

    • для постов
    • для категорий
    • для страницы контактов

    Если Вы знакомы с регулярками, то разобраться в файле Вам не составит труда.

    php функция chpu() — Алгоритм поиска id записи в таблице базы данных

    Начнем с создания алгоритма поиска. Для этого нам понадобится знать в какой таблице искать и что искать . У Вас может возникнуть вопрос, что значит в какой таблице? Ведь таблица у нас одна — blog. Это не совсем так, сегодня мы рассматриваем только посты, но так же нам известно, что у категорий тоже есть свои ссылки, а таблица которая будет содержать имена категорий называется menu, именно поэтому алгоритм должен знать в какой таблице ему искать. Пускай функция chpu() на данном этапе будет работать лишь на половину, зато в следующих постах нам не придется редактировать ее (функцию).

    Создаем файл chpu.php помещаем его в пользовательские модули нашего движка, и пишем в этом файле следующую функцию:

    Функция очень простая, так что не будет на ней останавливаться, тем более я уже не раз разъяснял логику поиска id в таблице.

    Скрипт позволяющий определить какая страница открыта

    Цель этого скрипта определить в каком режиме запустить функцию chpu(). Определить это можно по GET запросу который создает нам сервер при обращение к станице по ЧПУ. Если Вы внимательно смотрели содержимое файла htaccess, и приблизительно поняли его работу, то Вы должны догадаться, что сервер для себя определяет ссылку вот такого вида

    То есть, если пользователь обратился к станице с помощью ЧПУ то сервер создаст GET запрос post, создание такого запроса сигнализирует нам о том что пользователь обратился на страницу поста, стало быть функцию chpu() необходимо запускать в режиме поиска id в таблице blog

    Создаем файл getchpu.php, сохраняем его в папке пользовательских модулей и пишем в нем следующий скрипт

    Логика скрипта следующая:

    • Скрипт будет работать только в случае если блог работает в режиме вкл ЧПУ, то есть переменная chpu равна единице (это сделано для того чтобы режимы можно было поменять воздействуя лишь на одну переменную)
    • Далее подключается функция поиска >Если Вы создаете ссылки без .html, то Вам придется переделать регулярное выражение, ибо Ваши ссылки не пройдут проверки!

    Тут есть один момент. Если Вы писали движок с самого начала курса, то у Вас скорее всего нет переменной server_root. Если Вы ставили копию движка, что я давал в посте «Установка нашей CMS», то эта переменная у Вас есть.

    Если у Вас нет этой переменной, то откройте пользовательский файл index.php, и сразу после подключение к базе данных пропишите эту переменную

    Значение переменной является адрес Вашего блога. Эта переменная необходима была в админке для авторизации , тут же она необходима для реализации ЧПУ , в частности для тега что мы применим чуть ниже.

    Подключаем модуль ЧПУ к нашему движку


    Открываем пользовательский файл index.php, и сразу после подключения к базе данных пишем вот такой код

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

    Теперь в самом низу, перед строчкой

    Создаем переменную urlsite

    Эта переменная необходима для того чтобы определить базовую ссылку сайта. В шаблоне index.html после строчки

    вставляем вот такой тег

    Этот тег позволяет определить корень сайта, тем самым мы избавимся от глюка который мешает правильно определить пути к стилям. Если не поместить этот тег в код шаблона, то все страницы находящиеся по ЧПУ перестанут грузить стили, ява скрипты, и если я не ошибаюсь то и картинки

    Заключение

    Теперь при заходе на страницу http://rsblog.ru/post/dobro-pozhalovat.html я попадаю на страничку статьи

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

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

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

    Как избежать ошибок при формировании URL страниц?

    URL структура сайта

    Сначала немного истории и определения понятий. Uniform Resource Locator (URL) — это единый указатель ресурсов. Впервые был введен Тимом Бернерсом-Ли в 1990 году. Изначально URL обозначал место расположения ресурса в интернете, в настоящее время он используется для записи адреса ресурса в сети.

    Стандартный способ отображения URL страницы в большинстве случаев имеет такой вид — http://domain.ru/articles.php после адреса сайта отображается адрес исполняемого файла, после .php ставится знак вопроса и потом уже указывается URL, в котором отображаются параметры выводимой страницы, например: /catalog.php?tag=dance&action=list — просмотр списка статей с меткой dance (танец). Но естественно такие URL неудобны для посетителей сайтов, цифры обозначающие параметры еще будут понятны, но такие URL могут получаться очень длинными в случаях больших запросов для вывода, и не будут помещаться в видимую часть адресной строки браузера.

    Отсюда следует, что URL структура адресов сайта должна быть максимально упрощенной, что делает её удобной для глаз посетителей. Перечислим основные моменты:

    • Нужно организовывать содержание сайта таким образом, чтобы URL имели логическую структуру и были более понятны для человека. Рекомендуется использовать не идентификаторы, состоящие из множества цифр, а обычные слова. Например, если пользователь будет искать информацию о танцах то, URL-адрес типа http://www.domain.ru/latino/samba/ поможет определить информационную значимость ссылки. А если URL сайта имеет вид типа http://www.domain.ru/list.php? > то, такой ссылкой будет сложно привлечь внимание пользователей.
    • Также рекомендуется использовать знаки пунктуации в URL-адресах . Например, адрес http://www.domain.ru/modern/strip-dance/ более удобен для чтения, чем http://www.domain.ru/modern/stripdance/ . Лучше использовать в URL-адресах дефисы, а не символы подчеркивания. Каждая страница сайта должна быть с уникальным URL, чтобы глядя на неё, можно было иметь представление о том, что содержится на странице.
    • Немного слов о регистре URL . Пользователи сайтов, как правило, вводят URL в нижнем регистре (маленькими буквами). Но для поисковой системы stranica.html и Stranica.html — две разные страницы, но с одинаковым содержанием. Таким образом получается дублированный контент и потеря веса страницы с основным URL в нестандартном регистре.
    • Еще один момент оптимизации URL — использование «.html» или «/» (слеш) в конце адреса. Заметно, что некоторые URL-адреса имеют вид http://domain.ru/page.html вместо http://domain.ru/page/. Принципиальной разницы нет, но если в первом варианте можно точно сказать о том, что это именно страница, то второй вариант может оказаться и директорией. Что и в какой ситуации использовать, каждый выбирает сам.

    Длина URL-адресов

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

    2 раза. Еще одним плюсом является то, что короткий URL-адрес легче запоминается и удобен при прямом наборе с клавиатуры.

    Человекоподобные URL или как их принято называть ЧПУ это адреса удобные для их восприятия человеком. Определенный транслитированный адрес веб-страницы, содержащий в большинстве случаев продвигаемые запросы или их часть для данной страницы. ЧПУ концепция подхода к построению URL используется для удобства пользователей. Создание ЧПУ предполагает вместо непонятных и длинных URL, использовать лаконичные и понятные адреса. Выглядит это примерно так: /dance/modern/go-go/ — общая категория танцы, подкатегория современные танцы, и разновидность танца гоу-гоу.

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

    Если пользователь смотрит определенную страницу на сайте, то в URL он должны видеть сокращенное название этой страницы на транслите, либо полное название страницы если оно вмещается в строку браузера. Например: http://domain.ru/chelovekoponyatnye-url.html Взглянув на такой адрес в строке браузера становиться примерно понятным содержание страницы.

    При поиске информации пользователи зачастую обращают внимание на URL, а не только на описания и названия страницы. И делают выбор в пользу адресов, прочитав которые можно иметь представление о содержимом страницы.

    Существует один небольшой минус организации такой структуры — увеличение затрат ресурсов сервера на обработку таких ЧПУ. Но положительные моменты с лихвой его перекрывают.

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

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

    ЧПУ-адреса — описание, рекомендации, примеры

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

    Что такое ЧПУ

    ЧПУ это сокращение фразы “ЧеловекоПонятные УРЛы” (на английском, Search Engine Friendly URL s), что означает красивые и дружественные адреса. Смыслы, вложенные в русский и английский термины, немного разнятся, так как ЧПУ касается больше юзабилити (удобства использования для человека), а SEF больше направлен на SEO (быть дружественным поисковикам). Как бы там ни было, у ЧПУ -адресов есть множество преимуществ над обычными адресами, поэтому, их всегда рекомендуется использовать, но использовать грамотно, как и любой другой инструмент.

    Рассмотрим пример ЧПУ

    Старые версии адресов (неудобных и недружественных):

    Новые версии адресов страниц в формате ЧПУ могут иметь следующий вид:

    Как вы видите, вторые варианты намного удобнее.

    Какие ещё преимущества, помимо внешней красоты, дают ЧПУ ?

    — В них можно вставить ключевые слова.
    — Если на вашу страницу ссылаются её адресом, то в текст ссылки попадают эти ключевые слова.
    — ЧПУ -адреса легко диктовать.
    — Перед переходом по ссылке примерно понятно содержимое страницы.
    — При переходе на страницу можно, не читая контент, определиться, где ты находишься. Это решает одну из задач навигации.
    — ЧПУ можно использовать как хлебные крошки, удаляя часть адреса с конца и попадая сразу в нужный раздел, не производя поиск соответствующей ссылки на сайте. Удобно в плане юзабилити.
    — ЧПУ -адреса реже становятся причиной возникновения дублей на сайте.
    — При анализе отчетов (использовании веб-аналитики) ЧПУ -адреса воспринимаются аналитиком намного удобней и ускоряют работу.
    — В поисковой выдаче, если ключевые слова встречаются в ЧПУ , то они подсвечиваются, таким образом, обращая на себя внимания и увеличивая CTR (кликабельность) сниппета.
    — ЧПУ -адреса страниц чаще легко запоминаются.

    Допустим, вы решили на своем сайте организовать ЧПУ шные адреса. Что нужно иметь в виду?


    Рекомендации по использованию ЧПУ

    1. Как организовать структуру ЧПУ ?

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

    Этот шаблон подходит для всех статических страниц сайта (контакты, о нас, faq, доставка, условия использования и так далее), а также для обозначения разделов или рубрик в интернет-магазинах или контент-проектах (раздел “ноутбуки” или рубрика “интервью”).

    Шаблон: /pagename.html
    Пример: /usability-factors.html
    Тип сайта: Любой

    Этот шаблон больше подходит для динамических страниц, если сайт имеет всего одну рубрику (например, статьи и ничего больше), но также может использоваться и для статических страниц сайта.

    Шаблон: /id/title
    Пример: /1034/kirkorov-davay-dosvidaniya
    Тип сайта: Новостной (или обзорный) ресурс

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

    Шаблон: /year/month/day/title.html
    Пример: /2012/04/23/my-first-post.html
    Тип сайта: Блоги, новостные ресурсы

    Использование даты в ЧПУ очень удобно для тех проектов, где главным вопросом является актуальность материала. По адресу вы сразу можете определить, насколько материал актуален и стоит ли его читать дальше, а также можно легко найти старые материалы в поисковике, за определенный год или месяц. Такой шаблон часто используется новостными порталами и некоторыми блогами (дневниками).

    Шаблон: /category/subcategory/title
    Пример: /notebook/asus/asus-3012
    Тип сайта: Интернет-магазины, блоги, новостники

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

    При проектировании сайта выберите основные рубрики, их подрубрики и элементы в этих подрубриках. Легче всего организовать ЧПУ таким образом, чтобы адрес отражал структуру сайта. Например, если у вас имеется городской портал, то основные разделы будут иметь вид:

    /afisha/
    /news/
    /gallery/
    /job/
    /forum/
    и так далее, детализируясь в каждой рубрике:

    /afisha/kino/
    /afisha/theatre/
    /afisha/sport/
    и так далее.
    /afisha/sport/ledoviy-dvorec/
    /afisha/sport/bowling-club/

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

    2. Кириллица или латиница?

    Что лучше выбрать для ЧПУ – кириллические адреса, латиницу или транслитерацию? Здесь дело вкуса, но с точки зрения юзабилити, смешивать латиницу и кириллицу в одном ЧПУ нецелесообразно, так как пользователю приходится менять раскладку клавиатуры, чтобы набрать адрес вручную (хотя, Википедия этим не брезгует). С точки зрения SEO нет разницы, поисковики понимают и латиницу, и кириллицу, и транлитерацию.

    Кириллица для ЧПУ удобна, когда сам домен кириллический или когда эта часть адреса не очень длинная (например, в словарях). Единственный недостаток кириллических ЧПУ это вставка кодированных значений пути адреса при копировании его из браузера.

    Латинские ЧПУ (с переводом русских слов) хорошо использовать для обозначений рубрик и статических страниц, так как все привыкли к /news/ вместо /novosti/ или /contacts/ вместо /kontakti/. Для названия статей это делают реже, если редактору это не в тягость (например, я использую на блоге латинские ЧПУ ).

    Транслитерацию хорошо использовать для названий статей. При этом, не важно, по какому ГОСТ у вы производите транслитерацию заголовков статей, поисковые системы понимают разные варианты. В очень редких случаях, если вы составляете ЧПУ для разделов небольшого сайта, можно проверить подсветку в поиске:

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

    3. Длина ЧПУ

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

    Пример длинного и неудобного ЧПУ :

    Настройте свою CMS таким образом, чтобы длина ЧПУ была не более 60-80 символов (чем меньше, тем лучше и удобней). Если у вас подкатегории товара (например, в интернет-магазине) имеют 4-5 уровень вложенности, то целесообразно отобразить в ЧПУ лишь последнюю подкатегорию или первую и последнюю, но не все 4-5, чтобы сократить длину ЧПУ .

    4. Подчеркивания или дефисы?

    Что лучше использовать для ЧПУ для разделения слов: подчеркивания или дефисы? Можно и то и другое, но дефисы предпочтительней, так как для их набора требуется одно нажатие на клавиатуре, а для подчеркивания два (плюс Shift).

    А что с пробелами? Пробелы лучше не использовать в ЧПУ , так как во многих случаях они могут вызвать только головную боль вебмастера. Заменяйте пробелы на другие разделительные символы (дефисы, подчеркивания или, в крайнем случае, на плюсы). Оптимальные ЧПУ содержат однотипные символы на каком-либо языке и разделительные знаки – никаких пробелов, кавычек, запятых или других служебных символов.

    5. Какой ЧПУ выбрать для мультиязычных сайтов?

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

    6. Нужны ли ЧПУ для названий изображений и видео?

    Если на сайт планируется получать трафик также с поиска по изображениям или видео, то здесь важно лишь название изображения (например, hrizantema.jpg вместо 1244_2344.jpg), а сам путь, где хранится изображение или видео-файл, не имеет значения (только Google может находить изображения по имени папки). Также адреса изображений не так активно используются как адреса страниц.

    Часто возникающие ошибки при использовании ЧПУ

    • Использование пробелов и служебных символов.
    • Формирование слишком длинных ЧПУ -адресов.
    • Использование цифровых значений в ЧПУ

    Такие адреса сложно назвать ЧПУ , так как по ним понятно лишь, что мы перейдём в раздел новостей, но цифры ID ни о чем не говорят.

    • Отсутствие странц на сайте при удалении правых частей ЧПУ до слешей.
    • Использование не значимых слов в адресе

    Частица /page/ в данном случае (или /category/) не является значимой, поэтому, её можно удалить, чтобы сократить длину ЧПУ .

    Заключение

    Часто возникающие проблемы с ЧПУ связаны, в основном, с использованием старых CMS . В новых системах управления сайтами этот модуль более-менее хорошо продуман и позволяет гибко управлять структурой ЧПУ (хотя, иногда приходится добавлять вспомогательные плагины). Если вы используете старые версии CMS и хотите иметь на сайте красивые ЧПУ , стоит рассмотреть вариант перехода на новые системы, выбирая их в зависимости от типа проекта.

    А каких правил придерживаетесь вы при продумывании ЧПУ -адресов?

    Мастер Йода рекомендует:  Кодировки web-документов
  • Добавить комментарий