Мир интернета стремительно развивается и покоряет все новые вершины. Миллионы сайтов, сервисов и служб рады принять очередного пользователя на своих страницах. Создано огромное количество адресов, которые генерируются автоматически. И не всегда их удобно читать и запоминать. К тому же бессмысленный набор символов плохо ранжируется поисковыми системами. Вследствие этого возникла необходимость ввести реализацию кода таким образом, чтобы он мог предстать в более удобном и приятном глазу пользователя виде.
Поэтому в мире веб-разработок появился термин ЧПУ-ссылки. О том, что это такое и как его реализовать, пойдёт речь в статье.
Что такое ЧПУ-ссылки
Вообще, ЧПУ - слово жаргонное, означающее человекопонятный урл. УРЛ - заимствование от английского URL, единообразного локатора ресурса. Человекопонятный, в свою очередь, означает набор символов в адресной строке, который удобно и легко воспринимается. Например, генерируемый адрес страницы может выглядеть так: http://example.com/index.php?page=name. Не очень понятно смотрится и не показывает структуру сайта. Присутствуют знаки, не несущие смысловой нагрузки и неясно, что значит страница и имя.
Следующий адрес может выглядеть так: http://example.com/products/new/boat. Здесь понятно, что речь о продукции, причём новой, а конкретно - о лодке. Это и есть человекопонятный урл. Он гораздо лучше индексируется поисковыми системами и показывается в выдаче выше остальных. А человек, посетивший сайт, сможет понять, что зашёл именно в нужный раздел.
Однако у ЧПУ-ссылок есть некоторые ограничения. Например, в адресе нельзя использовать русские символы. Они при этом заменяются на числовое значение и знак процента. Поэтому отечественные разработчики используют транслитерацию русских слов в латиницу. Например, так - oborudovanie или produkcia. Также автоматически сформированная ЧПУ-ссылка может увеличить общую длину строки.
Для реализации транслитерации и преобразования к человекопонятным урлам используются специальные средства. Доступны они, как правило, в системах управления контента - CMS. Создание ЧПУ-ссылок происходит в них автоматически, на основе названия товара, статьи или блога, а также раздела, в котором он размещён. В итоге, при создании новой записи, добавления товара формируется человекопонятный урл, который хорошо воспринимается и людьми, и машинами.
Как сделать ссылки ЧПУ в популярных CMS
CMS — система управления, контентом, которая в удобном и простом интерфейсе позволяет в короткие сроки создать полноценный сайт. Функционал расширяется за счёт наличия большого количества готовых шаблонов, модулей и плагинов. Это позволяет человеку далёкому от языков программирования PHP, JavaScript, HTML и смежных им, быстро создать свой собственный сайт или блог.
Практически все системы управления контентом обладают отличным набором инструментов в виде плагинов для создания ЧПУ. Стоит подробнее рассмотреть наиболее распространённые из них.
- WordPress — самая популярная, по статистике, система управления контентом. Она установлена на большинстве известных блогов и сайтов. Славится простотой освоения и установки.
- Joomla — популярна меньше, но все же активно используется среди разработчиков. Обладает хорошим функционалом, выбором компонентов, плагинов и модулей.
- OpenCart — отдельный проект для создания интернет-магазинов. Внутренне напоминает любую CMS, но «заточен» под решение узкого круга задач.
ЧПУ-ссылки в WordPress — простота реализации
WordPress является, наверное, самой простой системой управления контентом. Она способна значительно упростить создание сайта или блога с нуля за короткое время.
Настройка ЧПУ в WordPress проста и сводится в основном к скачиванию и установке плагина Cyr-To-Lat. Он служит для преобразования кириллических строк в латиницу.
Для начала стоит его найти и скачать. Делать это лучше с официального сайта WordPress. Так можно избежать вероятности попадания в плагин вредоносного или рекламного кода.
- После скачивания архива его нужно распаковать.
- Затем надо переместить эту папку в раздел wp-content ->plugins. Делается это, как правило, с помощью любого доступного FTP менеджера.
- Теперь нужно зайти в административную панель WordPress, введя логин и пароль.
- В разделе «Плагины» надо найти Cyr-To-Lat и активировать его. Плагин теперь установлен в системе и включен.
Далее, нужно выполнить настройку структуры ссылок.
- Для этого надо перейти в «Параметры», и там зайти в «Постоянные ссылки».
- В общих настройках есть несколько шаблонов, по которым можно построить внешний вид ссылки. Рекомендуется использовать тип «Произвольно», позволяющий настроить все, как необходимо. Самая простая конструкция для такого шаблона - /%category%/%postname%/. Она означает, что в адресной строке будет выводиться категория, а затем название поста.
- А потом уже Cyr-To-Lat преобразует все это в латиницу. В результате, получится красивая и понятная ЧПУ-ссылка в WordPress.
Помимо Cyr-To-Lat, можно использовать и аналоги, которые присутствуют на официальном сайте. Например, такие — WP Translitera, ACF: Rus-To-Lat, Rus-To-Lat Advanced. Установка данных плагинах похожа, поэтому останавливаться на них отдельно не имеет смысла.
ЧПУ в Joomla, несколько вариантов создания
Joomla немного более сложная система управления контентом. Так же, как и WordPress обладает свойством создавать сайты и блоги в короткие сроки. Она имеет обширный функционал и гибкость. Далее, нужно описать как сделать ссылки ЧПУ в данной CMS.
Joomla изначально обладает встроенным функционалом для создания человекопонятных урлов. ЧПУ-ссылки в Joomla 3 можно включить на странице общих настроек в разделе «Настройки SEO». Пункт «Включить SEF (ЧПУ)» должен быть установлен в положение «Да». Таким образом ссылки будут преобразованы в более понятный вид.
Здесь же можно дополнительно установить перенаправление урлов, путем создания ЧПУ-ссылки в htaccess. Этот файл выполняет роль конфигурационного хранилища веб-сервера Apache. В нем можно с помощью регулярных выражений и директивы RewriteRule изменить преобразование ссылки в нужный урл. Главное отличие такого подхода - гибкость. Можно привести ссылки практически к любому виду.
Пункт «Добавлять суффикс к URL» приставляет в конце строки расширение документа. Например, html. Данное расширение мало интересует рядового посетителя сайта, поэтому опцию можно оставить в положении «Нет».
Алиасы в Unicode - данный пункт проводит транслитерацию названия материала в латиницу. Это нужно для того, чтобы вместо русских букв или других символов не отображалось нечто несуразное и нечитаемое.
Альтернативные компоненты для Joomla
Реализовать генератор ЧПУ-ссылок в Joomla также можно с помощью различных компонентов. Например, один из популярных - JoomSEF. Он распространяется бесплатно и лучше скачивать его с официального сайта Joomla.
В её функционал, помимо преобразования урлов в ЧПУ, имеется набор для генерирования метаданных, поисковых машин, ключевых слов, а также управления дублирующимися страницами. Стоит отметить имеющуюся поддержку кодировки UTF-8 и настройку страницы 404 по своему усмотрению.
В Joomla 3 возможны три способа установки: загрузкой напрямую с компьютера, из каталога сайта и посредством передачи ссылки на него.
Для первого варианта файл придётся скачать. Затем выбрать в меню административной панели CMS в «Расширения» и перейти в «Менеджер расширений». С помощью кнопки «Выберите файл» надо показать системе подготовленный архив и установить его.
Второй вариант используется редко. А вот третий является самым удобным из них, так как не требует скачивания. Достаточно всего лишь скопировать ссылку на JoomSEF и указать его в поле «Установить из URL» на одноимённой вкладке. Система сама проверит его наличие и при соответствии всех параметров установит.
Стоит отметить, что для полноценной работы дополнения, нужно чтобы пункты «Включить SEF», «Перенаправление URL» и «Добавлять суффикс к URL» в настройках SEO были переведены в положение «Да».
Установленный компонент сразу же внедрится в систему в активном режиме и начнёт свою работу. А именно, преобразует все имеющиеся ссылки в более эстетичный вид.
JoomSEF обладает большим количеством настроек и опций. С их помощью можно очень тонко привести все ссылки сайта практически к любому необходимому виду.
JBZoo и человекопонятный урл
Компонент JBZoo представляет собой универсальный и мощный инструмент для создания интернет-магазинов, каталогов, блогов и просто сайтов-визиток на базе системы управления контентом Joomla.
Для установки JBZoo в Joomla в ней уже должно присутствовать дополнение Zoo.
Иногда стандартные настройки SEF не дотягиваются до своих компонентов, чтобы выполнить преобразование. Поэтому для создания ЧПУ-ссылок в JBZoo рекомендуется применять компонент sh404SEF. Данный продукт бесплатен и является хорошим инструментом для формирования ссылок в JBZoo. Большое количество настроек, функций, поддержки различных соцсетей и сервисов.
Установка производится путем копирования ссылки на архив, либо с помощью прямой загрузки файла на сервер, скачанного предварительно.
OpenCart и настройка ЧПУ
OpenCart — это платформа без привязки к какой-либо системе управления контентом. То есть функционирует отдельно. Ее главная направленность — удобное создание интернет-магазинов различной степени сложности. Несмотря на то что сам продукт бесплатен, многие дополнения к нему распространяются на коммерческой основе. Последняя стабильная версия — 2.0.
ЧПУ-ссылки в OpenCart 2 можно сформировать посредством ручной настройки или же с помощью отдельных модулей.
Начать настройку ЧПУ первым способом можно с редактирования конфигурационного файла htaccess веб-сервера Apache.
- Для этого нужно перейти в папку сайта через FTP или имеющийся в административной памяти файловый менеджер.
- В корневом каталоге должен лежать файл .htaccess.txt. Так как он не оказывает никакого действия на систему с расширением txt, то первое, что надо сделать — переименовать его в .htaccess. Теперь веб-сервер будет читать его директивы и исполнять их.
- Теперь нужно перейти в настройки сайта и на вкладке «Сервер» включить использование ЧПУ.
- Все изменения нужно сохранить.
- Теперь все ссылки должны преобразится.
Иногда, ввиду некоторых причин, многие адреса все же не изменяются и остаются непонятными. Для реализации этой задачи можно использовать компонент SeoPro. Правда, перед его установкой придётся сначала реализовать OCMOD Multiline Fix. Для этого нужно вручную изменить код одного файла. Находится он по адресу admin/controller/extension/modification.php. Для его редактирования рекомендуется использовать утилиту Notepad++, чтобы избежать проблем с кодировками.
Добавить нужно всего одну строку кода в блок после переменной $limit. Выглядит она так:
- $quote = $operation->getElementsByTagName('search')->item(0)->getAttribute('quote');
Далее, нужно найти условие:
- if (!$limit) {
- $limit = -1;
- }
и после него добавить:
- if ($quote == 'true') {
- $search = preg_quote($search);
- }
Данные файлы после изменения нужно сохранить.
Затем надо собственно установить и сам модуль SeoPro. Скачанный архив нужно распаковать на сервере. Затем выполнить пару запросов в базу данных посредством phpmyadmin:
- ALTER TABLE `oc_product_to_category` ADD `main_category` tinyint(1) NOT NULL DEFAULT '0'; ALTER TABLE `oc_product_to_category` ADD INDEX `main_category` (`main_category`);
Теперь нужно поправить главный файл index.php. В нем интересует строка:
- $controller->addPreAction(new Action('common/seo_url'));
которая заменяется на:
- if (!$seo_type = $config->get('config_seo_url_type')) {
- $seo_type = 'seo_url';
- }
- $controller->addPreAction(new Action('common/' . $seo_type));
Далее, идёт набор процедур, связанных с настройками внутри админки. В меню надо найти «Модули», перейти в «Модификаторы» и нажать на обновления. Находясь здесь же, нужно перейти к списку «Модули» и в нем установить SeoPro. Затем, по нажатию кнопки «Редактировать» зайти в него и сохранить. После всех манипуляций все должно заработать, если нет, то надо попробовать снова переустановить модуль. Или обратиться за помощью к специализированным форумам.
Реализация функционала ЧПУ на языке PHP
Большинство сайтов в Сети написаны на PHP. Он достаточно мощен, удобен и прост в изучении. Его работа незаметна для пользователя, так как обработка PHP-кода происходит на стороне сервера и браузеру отправляется уже готовая HTML-страница, понятная ему.
Показать реализацию ЧПУ-ссылок на PHP можно на небольшом примере кода. Однако для приведения строк адреса в реальных многостраничных проектах к человекопонятному виду, придётся повозиться.
Любой сайт начинает свою работу с файла index.php. В том числе и генерирует обращение к другим страницам сайта. Но сначала нужно немного изменить конфигурационный файл htaccess. В нем надо указать или расскомментировать несколько директив, как показано на фото.
Первая строка разрешает преобразовать URL с помощью сервера. Вторая — устанавливает базовый адрес. Следующие две строки выполняют проверки на присутствие файла и папки. Последняя передаёт управление в index.php, если 3 и 4 строка реализуются без ошибок.
Для хранения соответствия id страницы и её преобразованного значения нужна таблица. Поэтому её надо создать. В частности, можно создать простенькую, для понимания процесса. Она будет содержать два поля: SEF и page_id. SEF хранит название и имеет тип varchar. А page_id - номера страниц типа int.
Теперь осталось поправить и сам файл index.php. Это всего лишь пример и на практике конкретного проекта все может быть несколько иначе: $result = $_SERVER['REQUEST_URI']. В данной строке в переменную $result передаётся запрошенный урл.
- if (preg_match ('/([^a-zA-Z0-9\.\/\-\_\#])/', $result)) { header('HTTP/1.0 404 Not Found'); echo 'Недопустимые символы в URL'; exit; }
В этом блоке проверяется наличие символов, цифр и некоторых знаков. Если присутствует что-то другое кроме перечисленных, то выдаётся страница 404.
- $array_url = preg_split ('/(\/|\..*$)/', $result,-1, PREG_SPLIT_NO_EMPTY);
Здесь объявлен массив $array_url, в который с помощью функции preg_split помещаются элементы, не имеющие ничего лишнего в ЧПУ.
- if (!$array_url) { $ID_page = 1; }else{ $sef_value = $array_url[0];
Здесь происходит обработка запроса в случае, когда обращение было произведено не к конкретной странице, а к домену. Поэтому нужно в ответ отправить id = 1. Также на этом месте подразумевается запрос к базе данных проекта, который узнает, имеется ли в ней значение из переменной $sef_value в поле SEF. Если ничего не найдено, отправить пользователю страницу 404. В конце идёт обработка полученного в результате кода адреса и выдача соответствующих материалов или элементов.
Плюсы и минусы использования ЧПУ
Преимущества использования человекопонятных урлов можно перечислить таким образом:
- ссылка визуально выглядит эстетичнее, нежели набор непонятных символов, особенно на незнакомых сайтах;
- запоминание адреса происходит гораздо легче;
- весь путь и структура сайта становится понятной;
- GET параметры, передающиеся обычным путем, используют переменные в адресной строке, чего нет в ЧПУ, а значит, не нарушается безопасность;
- улучшение навигации по сайту;
- СЕО-оптимизация значительно улучшается и поисковые роботы лучше индексируют такой сайт.
Недостатков гораздо меньше. И самый существенный из них - это настройка. Не всегда удаётся привести адреса страниц к человекопонятному виду путем штатных или сторонних решений. Иногда приходится вникать в код и править его самостоятельно, что требует знаний и времени. Второй недостаток не так существенен и касается сайтов с большой посещаемостью. Из-за формирования ссылок на «лету» повышается нагрузка на сайт. Но так как стоимость сетевого оборудования неуклонно снижается, то такие затраты на ресурсы сервера мало кто считает. В общем, преимущества значительно перевешивают недостатки, поэтому несмотря на сложную реализацию человекопонятных урлов, использовать их стоит.
Заключение
В статье рассмотрено, какие ссылки являются ЧПУ, а какие нет. Были подробно расписаны наиболее простые и быстрые решения проблемы. А также несколько самых доступных вариантов сложных подходов. В любом случае использование CMS при разработке сайта значительно снижает трудо- и временные затраты при оптимизации адресов страниц. Поэтому связка CMS и ЧПУ должна быть использована как наиболее эффективная альтернатива ручной разработке.