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

  • 07.10.2023

Решил написать эту заметку, потому как надоело отвечать 100500 раз одно и то же на ВиО.

Многие начинающие веб-программисты рано или поздно сталкиваются с задачей внедрения в свой сайт человеко-понятных линков (ЧПУ). До внедрения ЧПУ все ссылки имеют вид /myscript.php или даже /myfolder/myfolder2/myscript3.php, что тяжело для запоминания и ещё хуже для SEO. После внедрения ЧПУ линки принимают вид /statiya-o-php или даже на кириллице /статья-о-пхп.

Кстати о SEO. Человекопонятные линки на САМОМ деле придумали не для удобного запоминания, а в основном для повышения индексируемости сайта, потому что совпадение поискового запроса и части URL даёт хорошее преимущество в рейтинге поиска.

Эволюция начинающего PHP-программиста может быть выражена следующей последовательностью шагов:

  1. Размещение plain-PHP кода в отдельных файлах и доступ к этим файлам через линки вида /myfolder/myscript.php
  2. Понимание, что все скрипты имеют значительную часть общего (например, создание подключения к БД, чтение конфигурации, запуск сессии и проч.) и как следствие создание общей начальной точки «входа», некоторого скрипта, который принимает ВСЕ запросы, а потом выбирает — какой внутренний скрипт подключить. Обычно этот скрипт имеет имя index.php и лежит в корне, вследствие чего все запросы (они же URLы) выглядят так: /index.php?com=myaction&com2=mysubaction
  3. Необходимость внедрения роутера и переход к человекопонятным линкам.

Замечу, что между пунктами 2 и 3 большинство программистов делают очевидную ошибку. Я не ошибусь, если назову это значением около 95% программистов. Даже большинство известных фреймворков содержат эту ошибку. И заключается она в следующем.

Вместо того, чтобы реализовывать принципиально новый способ обработки линков, ошибочно делается концепция «заплаток и редиректов» на базе.htaccess, которая заключается в том, чтобы с помощью mod_rewrite создавать множество правил редиректа. Эти строки сравнивают URL с каким-либо регулярным выражением и при совпадении расталкивают выуженные из URL значения по GET-переменным, в дальнейшем вызывая всё тот же index.php.

#Неправильный метод ЧПУ RewriteEngine On RewriteRule ^\/users\/(.+)$ index.php?module=users&id=$1 #....Ещё куча подобных правил...

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

Другой недостаток в том, что часто правится по сути конфига сервера, что само по себе нонсенс. И если в Apache конфиг можно «пропатчить» с помощью.htaccess, то в популярном nginx такой возможности нет, там всё находится в общем файле конфигурации в системной зоне.

И ещё один недостаток, вероятно, наиболее важный, что при таком подходе невозможно динамически конфигурировать роутер, то есть «на лету», алгоритмически менять и расширять правила выбора нужного скрипта.

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

Суть заключается в том, что начальный запрос всегда хранится в переменной $_SERVER[‘REQUEST_URI’], то есть его можно считать внутри index.php и разобрать как строку средствами PHP со всеми обработками ошибок, динамическими редиректами и проч и проч.

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

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f #Если файл не существует RewriteCond %{REQUEST_FILENAME} !-d #И если папка не существует RewriteRule ^.*$ index.php

Причём это правило можно разместить как в.htaccess, так и в основном файле конфигурации Apache.

Для nginx соответствующее правило будет выглядеть вот так:

Location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php last; } }

Всё просто.

Теперь рассмотрим кусок кода PHP в index.php, который анализирует ссылки и принимает решение — какой скрипт запускать.

/часть1/часть2/часть3

Первое, что приходит в голову — разбить её с помощью explode(‘/’, $uri) и сделать сложный роутер на основе switch/case, анализирующий каждый кусок запроса. Не делайте этого! Это сложно и в итоге приводит код в ужасный непонимабельный и неконфигурабельный вид!

Я предлагаю более лаконичный способ. Лучше не описывать словами, а сразу показать код.

"page404.php", // Страница 404 "/" => "mainpage.php", // Главная страница "/news" => "newspage.php", // Новости - страница без параметров "/stories(/+)?" => "storypage.php", // С числовым параметром // Больше правил); // Код роутера class uSitemap { public $title = ""; public $params = null; public $classname = ""; public $data = null; public $request_uri = ""; public $url_info = array(); public $found = false; function __construct() { $this->mapClassName(); } function mapClassName() { $this->classname = ""; $this->title = ""; $this->params = null; $map = &$GLOBALS["sitemap"]; $this->request_uri = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH); $this->url_info = parse_url($this->request_uri); $uri = urldecode($this->url_info["path"]); $data = false; foreach ($map as $term => $dd) { $match = array(); $i = preg_match("@^".$term."$@Uu", $uri, $match); if ($i > 0) { // Get class name and main title part $m = explode(",", $dd); $data = array("classname" => isset($m)?strtolower(trim($m)):"", "title" => isset($m)?trim($m):"", "params" => $match,); break; } } if ($data === false) { // 404 if (isset($map["_404"])) { // Default 404 page $dd = $map["_404"]; $m = explode(",", $dd); $this->classname = strtolower(trim($m)); $this->title = trim($m); $this->params = array(); } $this->found = false; } else { // Found! $this->classname = $data["classname"]; $this->title = $data["title"]; $this->params = $data["params"]; $this->found = true; } return $this->classname; } } $sm = new uSitemap(); $routed_file = $sm->classname; // Получаем имя файла для подключения через require() require("app/".$routed_file); // Подключаем файл // P.S. Внутри подключённого файла Вы можете использовать параметры запроса, // которые хранятся в свойстве $sm->params

Несмотря на то, что код довольно длинный, он прост логически. Мне не хочется его объяснять, я считаю любой код на PHP самообъясняющим, если он правильно написан. Учитесь читать код.

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

Ну так вот и с тех самых пор я хотел создать свой материал об этой теме, который наконец раскроет тайны создание простого незамысловатого ЧПУ без излишеств, строго и эффективно. Будем создавать ЧПУ с использованием .htaccess и непосредственно mod_rewrite , но всё по порядку.

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

Допустим нам нужно чтобы файл index.php принимал 2 переменные, например cat и art , т.е index.php?cat=содержимое&art=содержимое . Пусть в рамках примера cat - категория, art - статья, и есть у нас материал доступный по адресу index.php?cat=php&art=info-chpu , но мы понимаем как некрасиво это будет выглядеть в адресной строке браузера и нам нужно чтобы наш материал был доступен по адресу php/info-chpu . Поэтому нам нужен ЧПУ:

Главная роль представляемого ЧПУ отдаётся файлу.htaccess именно он делает всю работу. Итак чтоже должно быть в файле.htaccess:

RewriteEngine On

Теперь попытаюсь объяснить содержимое файла.htaccess. Строка RewriteEngine On - используется для так сказать включения перенаправления, по правилам которые вы опишите. Пользователь переходит по ссылке php/info-chpu, запускается тут же содержимое файла.htaccess, которое видит что запрашиваемая ссылка php/info-chpu подходит по правилу (.*)/(.*) , всвязи с чем разделяет запрашиваемый адрес по частям правила содержимое1/содержимое2 и передаёт их исполнительному файлу index.php?cat=содержимое1&art=содержимое2 .

Вот и всё. Теперь всё что нам следует сделать это "ловить" и использовать нашим index.php две переменные cat и art .

Внимание если обработчиком php вы используете cgi-bin то вместо файла .htaccess у вас должен быть htaccess.txt

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

index.php - основной файл

htaccess.txt - файл для Cgi-bin обработчика

.htaccess - файл для Apache обработчика

Распакуйте содержимое архива к себе на сервер, и попробуйте запрос например <ваш_сервер>/trololo/512 или любой другой, <ваш_сервер> - как вы поняли писать не стоит, это я указал так место куда вы распакуете архив и откуда будете запускать файл.

Если остануться вопросы - пишите в комментариях.

Для тех, кто не понял что и как.

Вся суть данного ЧПУ состоит в htaccess файле, а что он именно делает?

RewriteEngine On
RewriteRule ^(.*)/(.*)$ index.php?cat=$1&art=$2 [L]

Можно сказать данный пример принимает адрес вида:

и отдаёт обработчикам ужи такого вида:


А мы уже файлом index.php принимаем $_GET["cat"] и $_GET["art"], которые в себе содержат название категории и материала.

Показанный в статье пример можно изменять как угодно.

Например у нас есть рабочий адрес domen.ru/avto.php?cat=sportcars&avto=porshe&model=carrera и если мы хотим сделать его ЧПУ вида:

То пишем в.htaccess:

RewriteEngine On
RewriteRule ^(.*)/(.*)/(.*)$ avto.php?cat=$1&avto=$2&model=$3 [L]

И после того как мы добавим вешеуказанные пару строк в.htaccess файл, наш материал будет открываться для посетителей по адресу:

domen.ru/sportcars/porshe/carrera

Или вдруг если у нас имеется несколько обработчиков PHP, то можно для каждого поставить правило в.htaccess:

RewriteEngine On
RewriteRule ^avto/(.*)$ avto.php?id=$1 [L]
RewriteRule ^air/(.*)$ forair.php?id=$1 [L]
RewriteRule ^flot/(.*)$ waterflot.php?id=$1 [L]

Из примера видно, то всё запросы начинающиеся с domen.ru/avto/ будут отправляться в обработчик avto.php, начинающиеся с domen.ru/air/, в обработчик forair.php.

Теперь стоит отметить важное! перед вашим RewriteRule поставьте такой код:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

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

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

src="/images/vasya.png"

src="http://site.com/images/vasya.png"

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

Настало самое время поговорить о втором варианте редиректа через.htaccess. Второй вариант полностью завязан на первом, но представляет собой универсальный редирект со стороны htaccess. Состоит редирект всего из одного правила:

RewriteRule ^(+)$ /engine.php?query=$1 [L]

Вся логика такого редиректа в том, что абсолютно всё после http://site.com/ будет отсылаться на обработчик engine.php в переменной $_GET["query"]. Далее мы в engine.php можем разбить переменную на части:

$query=$_GET["query"];

$url=explode("/", $query);

И теперь мы получили массив $url в каждой ячейке которого содержиться часть полного пути. Например, если наш адрес (переменная query) выглядит так: transport/auto/ferrary/laferrary/description , тогда после обработки будет:

$url="transport";

$url="auto";

$url="ferrary";

$url="laferrary";

$url="description";

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

И возможно пригодится: Для того чтобы узнать количество записей в массиве используйте count($url) , для того чтобы посмотреть значение последней записи в массиве используйте end($url) .

На вопрос, как сделать станок с ЧПУ, можно ответить кратко. Зная о том, что самодельный фрезерный станок с ЧПУ, в общем-то, – непростое устройство, имеющее сложную структуру, конструктору желательно:

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

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

Работы подготовительного этапа

Чтобы сделать самодельный ЧПУ для фрезерования, есть два варианта:

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

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

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

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

Сборка некоторых важных узлов станка

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

  • винтовая передача – вращение передаётся, используя зубчатый ремень. Он хорош тем, что не проскальзывают на шкивах, равномерно передавая усилия на вал фрезерного оборудования;
  • если используют шаговый двигатель (ШД) для мини-станка, желательно брать каретку от более габаритной модели принтера – помощнее; старые матричные печатные устройства имели достаточно мощные электродвигатели;

  • для трёхкоординатного устройства, понадобится три ШД. Хорошо, если в каждом найдётся 5 проводов управления, функционал мини-станка возрастёт. Стоит оценить величину параметров: напряжения питания, сопротивления обмотки и угла поворота ШД за один шаг. Для подключения каждого ШД нужен отдельный контроллер;
  • с помощью винтов, вращательное движение от ШД преобразуется в линейное. Для достижения высокой точности, многие считают нужным иметь шарико-винтовые пары (ШВП), но это комплектующая не из дешевых. Подбирая для монтажа блоков набор гаек и крепежных винтов, выбирают их со вставками из пластика, это уменьшает трение и исключает люфты;

  • вместо двигателя шагового типа, можно взять обычный электромотор, после небольшой доработки;
  • вертикальная ось, которая обеспечивает перемещение инструмента в 3D, охвачивая весь координатный стол. Её изготовляют из алюминиевой плиты. Важно, чтобы размеры оси были подогнаны к габаритам устройства. При наличии муфельной печи, ось можно отлить по размерам чертежей.

Ниже – чертёж, сделанный в трёх проекциях: вид сбоку, сзади, и сверху.

Максимум внимания – станине

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

К примеру, один из создателей самодельного станка ЧПУ, несущую раму сделал из алюминиевого профиля Maytec – две детали (сечение 40х80 мм) и две торцевые пластины толщиной 10 мм из этого же материала, соединив элементы алюминиевыми уголками. Конструкция усилена, внутри рамы сделано рамку из профилей меньших размеров в форме квадрата.

Станина монтируется без использования соединений сварного типа (сварным швам плохо удаётся переносить вибронагрузки). В качестве крепления лучше использовать Т-образные гайки. На торцевых пластинах предусмотрена установка блока подшипников для установки ходового винта. Понадобится подшипник скольжения и шпиндельный подшипник.

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

Этот непростой процесс монтажа

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

  • знающий умелец начинает с крепления на корпусе первых двух ШД – за вертикальной осью оборудования. Один отвечает за горизонтальное перемещение фрезерной головки (рельсовые направляющие), а второй за перемещение в вертикальной плоскости;
  • подвижной портал, перемещающийся по оси X, несет фрезерный шпиндель и суппорт (ось z). Чем выше будет портал, тем большую заготовку удастся обработать. Но у высокого портала, в процессе обработки, – снижается устойчивость к возникающим нагрузкам;

  • для крепления ШД оси Z, линейных направляющих используют переднюю, заднюю, верхнюю, среднюю и нижнюю пластины. Там же сделайте ложемент фрезерного шпинделя;
  • привод собирают из тщательно подобранных гайки и шпильки. Чтобы зафиксировать вал электродвигателя и присоединить к шпильке, используют резиновую обмотку толстого электрокабеля. В качестве фиксатора могут быть винты, вставленные в нейлоновую втулку.

Затем начинается сборка остальных узлов и агрегатов самоделки.

Монтируем электронную начинку станка

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

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

  • шаговые двигатели, некоторые остановились напримере Nema;
  • порт LPT, через который блок управления ЧПУ можно подключить к станку;
  • драйверы для контроллеров, их устанавливают на фрезерный мини-станок, подключая в соответствии со схемой;

  • платы коммутации (контроллеры);
  • блок электропитания на 36В с понижающим трансформатором, преобразующем в 5В для питания управляющей цепи;
  • ноутбук или ПК;
  • кнопка, отвечающая за аварийную остановку.

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

Вместо заключения

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

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

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

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

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

Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!

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

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

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

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

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

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

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

Http://сайт/useful/2-sublime-text-2

Http://сайт/useful/ Options +SymLinksIfOwnerMatch

RewriteEngine On

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

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

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

RewriteRule ^useful/(*) /index.php?category=useful&article=$1

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

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

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

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

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

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

/index.php?category=useful&article=$1

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

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

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

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

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

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

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

Например:

  • {4} — должно быть ровно 4 символа из предшествующего текста.
  • {4,5} — 4 или 5 символов
  • {,6} — от нуля до 6 символов
  • {4,} — от 4 до бесконечности символов

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

RewriteRule ^useful/(*)

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

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

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

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

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

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

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

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

RewriteRule ^useful/()

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

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

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

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

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

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

HTTP заголовки:
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT REMOTE_ADDR

Соединение и запрос:

REMOTE_HOST
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE

Внутри серверные:

DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE

Системные:

TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME

Специальные:

API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ

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

%{переменная}

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

RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* RewriteRule …

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

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

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

Флаги

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

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

RewriteRule ^useful/

  • ornext|OR – если это, либо следующее условие TRUE, то выполняем RewriteRule. Пример:
  • RewriteCond %{REMOTE_HOST} ^host1.* RewriteCond %{REMOTE_HOST} ^host2.* RewriteCond %{REMOTE_HOST} ^host3.* RewriteRule …
  • Last|L – последнее правило. Если правило применилось, то правила, расположенные ниже по коду, не сработают.
  • next|N – некий аналог continue. Если правило применилось, заставляет отыгрывать все правила с самого начала, но при этом с уже преобразованной строкой.
  • redirect|R – редирект. По умолчанию 302. Можно указать другой код редиректа, например:
  • forbidden|F – URL становится запрещённым.
  • gone|G – посылает 410 ответ сервера.
  • chain|C -связь. Если правило не сработало, то связанные с ним правила тоже автоматически не сработают.
  • type|T – MIME-тип. Принудительное выставление типа файла. Можно выдавать одно расширение файла за другое:) Например, лежат у нас файлы с расширением.zip, а на самом деле это картинки, так вот чтобы отдавать эти файлы как картинку(.png, .gif и тд.), можно использовать данный флаг.
  • skip|S – пропустить следующее правило, можно указывать сразу несколько, например:
  • env|E=VAR:VAL – установить переменную окружения.
  • cookie|CO – послать куки.
  • Если нужно поставить одновременно несколько флагов, ставим их через запятую, например:

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

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

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

    Options +SymLinksIfOwnerMatch RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1
    RewriteCond %{HTTP_HOST} ^[^www\.].*$ RewriteRule ^/?(+)/?$ /index.php?article=$1 [L]

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

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

    If (!empty($_GET["article "])){ // проверяем параметр article на пустоту switch($_GET["article "]){ case "значение1": $page = "путь до php файла1 нашей страницы";break; case "значение2": $page = "путь до php файла2 нашей страницы";break; case "значение3": $page = "путь до php файла3 нашей страницы";break; ... } include $page; // подключаем нужный файл, в зависимости от пришедшего параметра article }

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

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

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

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

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

    Вообще, ЧПУ - слово жаргонное, означающее человекопонятный урл. УРЛ - заимствование от английского 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.

    Начать настройку ЧПУ первым способом можно с редактирования конфигурационного файла 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;

    Здесь происходит обработка запроса в случае, когда обращение было произведено не к конкретной странице, а к домену. Поэтому нужно в ответ отправить id = 1. Также на этом месте подразумевается запрос к базе данных проекта, который узнает, имеется ли в ней значение из переменной $sef_value в поле SEF. Если ничего не найдено, отправить пользователю страницу 404. В конце идёт обработка полученного в результате кода адреса и выдача соответствующих материалов или элементов.

    Плюсы и минусы использования ЧПУ

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

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

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

    Заключение

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