Настройка ЧПУ (человекопонятные URL) для сайта

Вы меняете структуру URL, а старые ссылки из поиска перестают работать. Или URL выглядят как `/page?id=123` — пользователи их не читают, CTR падает. Мы сталкивались с этим на десятках проектов. Например, для интернет-магазина бытовой техники после внедрения ЧПУ количество страниц в индексе выросло в

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка ЧПУ (человекопонятные URL) для сайта
Средний
от 1 дня до 3 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Вы меняете структуру URL, а старые ссылки из поиска перестают работать. Или URL выглядят как /page?id=123 — пользователи их не читают, CTR падает. Мы сталкивались с этим на десятках проектов. Например, для интернет-магазина бытовой техники после внедрения ЧПУ количество страниц в индексе выросло в 3 раза за месяц, а CTR увеличился на 34%. Мы выработали систему, которая гарантирует читаемые и индексируемые URL без битых ссылок.

ЧПУ повышают CTR — пользователь видит в сниппете адрес и понимает, куда попадёт. А поисковые роботы быстрее обрабатывают логичную структуру. Мы гарантируем, что ваши URL станут читаемыми, уникальными и легко поддерживаемыми. В этой статье разберём ключевые принципы, типичные ошибки и готовые решения для Laravel. По данным Google Search Central, понятные URL помогают поисковым системам точнее определять содержимое страницы. Мы подготовили проверенный подход, который исключает проблемы с дубликатами, коллизиями и битыми ссылками.

Принципы хорошего URL

Плохо Хорошо
/product.php?id=4521 /products/iphone-15-pro-256gb
/cat/12/sub/45 /catalog/smartphones/apple
/articles/blog-post-with-date /blog/kak-vybrat-noutbuk
/page?lang=ru&id=about /o-kompanii
/Products/Laptops/Dell /products/laptops/dell (строчные)

Правила:

  • Только строчные буквы
  • Разделитель — дефис, не подчёркивание
  • Без технических ID (если можно обойтись)
  • Транслитерация или семантический перевод на английский
  • Логичная иерархия, отражающая структуру сайта
  • Без лишних стоп-слов: the, и, или, для

Как генерировать уникальные слаги без коллизий?

В Laravel можно использовать встроенный Str::slug, но он не проверяет уникальность. Мы добавляем проверку при создании записи и, если slug занят, генерируем новый с числовым суффиксом. Например, заголовок "Настройка сервера" даст slug nastrojka-servera, а при повторе — nastrojka-servera-2.

use Illuminate\Support\Str; // Простая транслитерация через iconv function translit(string $text): string { $text = mb_strtolower($text); $cyrToLat = [ 'а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d','е'=>'e','ё'=>'yo', 'ж'=>'zh','з'=>'z','и'=>'i','й'=>'y','к'=>'k','л'=>'l','м'=>'m', 'н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u', 'ф'=>'f','х'=>'kh','ц'=>'ts','ч'=>'ch','ш'=>'sh','щ'=>'shch', 'ъ'=>'','ы'=>'y','ь'=>'','э'=>'e','ю'=>'yu','я'=>'ya', ' '=>'-','_'=>'-', ]; $text = strtr($text, $cyrToLat); return preg_replace('/[^a-z0-9\-]/', '', $text); } // В модели protected static function boot(): void { parent::boot(); static::creating(function (self $model) { if (empty($model->slug)) { $model->slug = static::generateUniqueSlug($model->title); } }); } protected static function generateUniqueSlug(string $title): string { $slug = translit($title); $original = $slug; $count = 1; while (static::where('slug', $slug)->exists()) { $slug = "{$original}-{$count}"; $count++; } return $slug; } 

Почему стоит хранить историю слагов?

Отметим: когда slug меняется (например, из-за ручного редактирования), старый URL должен автоматически редиректить на новый. Иначе поисковики вернут 404, а пользователи увидят ошибку. Мы создаём таблицу slug_redirects, которая хранит пары старый → новый slug для каждой модели.

Schema::create('slug_redirects', function (Blueprint $table) { $table->string('old_slug')->primary(); $table->string('new_slug'); $table->string('model_type'); $table->unsignedBigInteger('model_id'); $table->timestamps(); }); 

После этого middleware при запросе проверяет, нет ли редиректа для запрошенного URL, и возвращает 301.

Маршрутизация

// Вложенные маршруты для иерархии Route::get('/catalog/{category}/{subcategory?}', [CatalogController::class, 'show']) ->where(['category' => '[a-z0-9\-]+', 'subcategory' => '[a-z0-9\-]+']); Route::get('/catalog/{category}/{subcategory}/{product}', [ProductController::class, 'show']) ->where(['product' => '[a-z0-9\-]+']); 

Как обеспечить постоянство URL без багов?

Фиксированный slug не меняется при редактировании заголовка — это SEO-предпочтительно, так как нет битых ссылок. Автоматический slug обновляется с заголовком, но требует обязательного 301-редиректа со старого slug. Мы рекомендуем фиксированный slug с возможностью ручного редактирования. Если клиенту важно автоматическое обновление, обязательно подключаем историю редиректов.

Типичные ошибки, которые встречаются при настройке ЧПУ: использование ID в URL вместо слага, неправильная транслитерация (например, "щи" превращается в "schi" вместо правильного "shchi"), отсутствие редиректов при изменении slug, игнорирование мультиязычности. Все эти проблемы мы решаем на этапе аудита и проектирования.

URL для мультиязычных сайтов

Варианты структуры:

Структура Пример
Субдомен ru.example.com/products/laptop
Префикс пути example.com/ru/products/laptop
Отдельный домен example.ru/products/laptop

Для Яндекса предпочтительны региональные домены (.ru). Для Google — любой вариант работает, если настроен hreflang. Мы поможем выбрать оптимальную структуру под ваш регион. Экономия на SEO-продвижении за счёт правильных URL достигает 30%.

Пагинация

Предпочтительный формат: /blog/page/2 или /blog?page=2. Второй вариант удобнее — не требует отдельного роута, canonical автоматически корректен. Для больших каталогов используем пагинацию с номером страницы в URL.

Что входит в работу

  • Аудит текущих URL — выявление проблем (ID, дубликаты, стоп-слова)
  • Проектирование структуры — иерархия, транслитерация, мультиязычность
  • Реализация slug-системы — модель, генерация, проверка уникальности
  • Настройка редиректов — таблица истории, 301 с любого старого URL
  • Тестирование — проверка всех переходов, отсутствие 404
  • Документация — описание структуры и правил редактирования
  • Обучение команды — как добавлять новые страницы без ошибок
Пример реализации middleware для 301 редиректа
public function handle($request, Closure $next) { $path = $request->path(); $redirect = SlugRedirect::where('old_slug', $path)->first(); if ($redirect) { return redirect($redirect->new_slug, 301); } return $next($request); } 

Сроки и как заказать

Типичный проект по настройке ЧПУ для сайта на Laravel занимает от 1 до 3 дней в зависимости от сложности и количества страниц. Мы оцениваем каждый проект индивидуально — свяжитесь с нами, и получите консультацию с точными сроками. Наш опыт — более 50 внедрений, гарантируем качество. Закажите настройку ЧПУ — и ваши URL станут читаемыми, индексируемыми и без битых ссылок.

Процесс работы:

  1. Аналитика и аудит текущих URL
  2. Проектирование идеальной структуры с учётом SEO и UX
  3. Реализация slug-системы с редиректами
  4. Тестирование на staging-окружении
  5. Деплой и финальная проверка

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