franky_d_zoro7 часов назад
ЧПУ URL на сайте: как сделать структуру чтобы SEO сказал вам спасибо
Уровень сложностиПростойВремя на прочтение10 минОхват и читатели4.8KРазработка под e-commerce*Поисковая оптимизация*Интернет-маркетинг*МнениеКак сделать ЧПУ url на сайтеПредставьте: вы выкатываете проект, где роутинг реализован через классические GET-параметры. Адреса страниц выглядят как site.ru/products.php?category_id=102&item_id=9452&sort=desc. С точки зрения кода всё работает стабильно – сервер получает четкие инструкции и отдает нужные данные.
Проблемы начинаются, когда на проект заходит SEO-специалист. Он видит эти «хвосты» и начинает проклинать архитектуру url. Для поисковиков это препятствие для ранжирования и плохой пользовательский опыт. Чтобы навести порядок в индексации и сделать ссылки понятными, приходится внедрять ЧПУ (человекочитаемый URL, от "человеко-понятный URL).
ЧПУ URL – это адрес страницы, в котором вместо кодов и параметров стоят нормальные слова. Например, site.ru/catalog/noutbuki вместо site.ru?cat=12&id=4587. Читается с первого взгляда, запоминается, легко копируется – и это лишь начало преимуществ.
Я Пётр Гришечкин, эксперт в области SEO. Последние 15 лет я проектирую системы кратного роста трафика для крупнейших сайтов. И последнее время пишу всякие околоSEO статьи – https://t.me/seo_and_sem
Ниже – практическое руководство: от понимания структуры до настройки на сервере и разбора реальных ошибок.
Что такое ЧПУ URL и зачем он нужен
Что такое ЧПУ URL и зачем он нуженКлассический динамический URL формируется на лету – сервер берёт параметры из запроса и собирает страницу. Адрес получается вроде site.ru/news.php?section=seo&article_id=456&lang=ru. Такой URL несёт в себе техническую информацию для сервера, но для человека и поискового робота он почти бесполезен.
ЧПУ URL переписывает этот адрес в читаемый вид:
• Было: site.ru/news.php?section=seo&article_id=456
• Стало: site.ru/news/seo-optimizaciya-2024Структура хорошего ЧПУ обычно выглядит так:
домен / раздел / подраздел / ключевое-словоНапример: magazin.ru/catalog/smartfony/iphone-15-pro
Каждый сегмент несёт смысл – и для пользователя, который понимает, где он находится, и для поисковика, который видит иерархию сайта и ключевые слова прямо в адресе.
Из чего состоит правильный ЧПУ
Хороший человекочитаемый URL отвечает нескольким простым критериям:
• Только строчные буквы – заглавные создают путаницу и потенциальные дубли.
• Слова разделены дефисами – не подчёркиванием (_), не пробелами, а именно дефисом (-). Google давно рекомендует именно такой формат.
• Без лишних параметров – никаких ?utm_source=... в постоянном адресе страницы.
• Короткий и понятный – 3-5 слов в пути обычно достаточно.
• Содержит ключевое слово – не ради SEO-трюка, а потому что ключевое слово и есть суть страницы.Пример плохого URL: site.ru/p?id=3312&ref=main Пример хорошего ЧПУ: site.ru/blog/prodvizhenie-sayta
Преимущества ЧПУ для SEO и пользователей
Это не просто "красивее выглядит". У ЧПУ URL есть конкретное влияние на поведение пользователей и позиции в поиске.
Кликабельность в выдаче растёт. Когда человек видит в поисковой выдаче адрес magazin.ru/noutbuki/igrovye, он сразу понимает, что попадёт в нужный раздел. Непонятный URL вызывает недоверие – и пользователь уходит к конкуренту.
Ключевые слова в URL работают. Поисковики придают небольшой, но реальный вес словам в адресе страницы. Если ваш URL содержит kupit-iphone, это плюс к релевантности по соответствующему запросу.
Краулеры (роботы поисковых систем) лучше понимают структуру. Иерархия в URL помогает Googlebot и Яндекс-боту определить, какие страницы важнее и как они связаны между собой.
Ссылки чаще шерят. Понятный URL копируют в мессенджеры, вставляют в статьи, цитируют – и при этом он не "ломается" визуально. Динамическую ссылку на 150 символов люди стараются не копировать вовсе.
Снижение количества отказов. Пользователь, попавший на понятный URL, лучше ориентируется на сайте и реже уходит сразу.
Как включить ЧПУ на популярных CMS
Как включить ЧПУ на популярных CMSБольшинство популярных систем управления контентом поддерживают ЧПУ из коробки – нужно просто включить нужную настройку.
Включить ЧПУ в WordPress
Это самый простой случай – буквально три шага:
• Зайдите в Настройки – Постоянные ссылки (Settings – Permalinks).
• Выберите структуру. Для большинства сайтов оптимально: Название записи (%postname%) или Произвольно с шаблоном /%category%/%postname%/.
• Нажмите Сохранить изменения – WordPress сам обновит .htaccess.Если после этого страницы выдают 404, проверьте, включён ли mod_rewrite на сервере. Об этом чуть ниже.
Включить ЧПУ в Joomla
• Общие настройки – вкладка SEO.
• Переключите Использовать SEF (Search Engine Friendly URLs) в положение Да.
• Включите Перезапись Apache – и поставьте галочку Добавлять суффикс к URL, если нужно.
• Переименуйте файл htaccess.txt в .htaccess в корне сайта.
Включить ЧПУ в OpenCart
• Система – Настройки – Сервер.
• Найдите пункт Использовать SEO URL и включите его.
• Переименуйте .htaccess.txt в .htaccess в корне.
• В административной части для каждой категории и товара задайте SEO-псевдоним (поле "SEO URL" или "Псевдоним").Без заполненных псевдонимов ЧПУ работать не будет – движок просто не знает, какой адрес дать странице.
Настройка ЧПУ на сервере: Apache и Nginx
Если CMS сама не справляется или вы работаете с кастомным движком – настройку нужно делать на уровне сервера.
Apache: настройка через .htaccess
Убедитесь, что модуль mod_rewrite включён. Проверить можно командой:
apache2ctl -M | grep rewriteЕсли модуль не активен:
sudo a2enmod rewrite
sudo systemctl restart apache2Базовые правила перезаписи в файле .htaccess:
RewriteEngine On RewriteBase /
# Перенаправление несуществующих файлов и директорий на index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
# Пример: категория по числовому ID
RewriteRule ^category/([0-9]+)/?$ /index.php?cat=$1 [L]Флаг [L] означает "последнее правило" – после него обработка останавливается. [QSA] сохраняет GET-параметры, если они есть.
Nginx: настройка через конфиг сервера
В отличие от Apache, Nginx не читает .htaccess. Все правила прописываются в конфигурационном файле виртуального хоста, обычно в /etc/nginx/sites-available/:
server {
listen 80;
server_name site.ru www.site.ru;
root /var/www/site;
index index.php index.html;
location / { try_files $uri $uri/ /index.php?$query_string; }
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}Директива try_files $uri $uri/ /index.php?$query_string – это и есть сердце настройки. Nginx сначала ищет файл, потом директорию, а если не нашёл – передаёт запрос в index.php.
После изменений обязательно перезапустите сервер:
sudo nginx -t # проверка конфига на ошибки sudo systemctl reload nginx
Интеграция ЧПУ с CDN и облаком
Если сайт работает через Cloudflare, AWS CloudFront или Яндекс.Cloud, ЧПУ URL нужно "научить" корректно кэшироваться и проксироваться.
Cloudflare: В разделе Page Rules создайте правило для паттерна site.ru/* с действием "Cache Level: Standard". ЧПУ-адреса без параметров кэшируются гораздо эффективнее, чем динамические – CDN просто отдаёт готовый ответ, не обращаясь к серверу каждый раз.
Nginx + CDN: Убедитесь, что заголовки Cache-Control и Vary выставлены корректно. Для статических страниц с ЧПУ можно агрессивно кэшировать на уровне CDN – это реально снижает нагрузку на бэкенд.
По опыту, переход на ЧПУ в связке с правильно настроенным CDN снижает количество запросов к origin-серверу на 15–25% за счёт лучшего попадания в кэш.
Автоматизация: массовая замена URL скриптами
Автоматизация: массовая замена URL скриптамиЕсли у вас сотни или тысячи страниц – ручная замена URL нереальна. Вот как автоматизировать этот процесс.
Bash-скрипт для замены в базе данных MySQL
#!/bin/bash
# Замена динамических URL на ЧПУ в таблице posts WordPress
DB_NAME="your_db"
DB_USER="your_user"
DB_PASS="your_password"
mysql -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" <<EOF
UPDATE wp_posts
SET guid = REPLACE(guid, '/?p=', '/post/')
WHERE post_status = 'publish';
EOF
echo "Замена завершена"Перед запуском – обязательно сделайте резервную копию базы данных.
Обновление .htaccess через sed
# Добавить правило редиректа для старых URL
sed -i '/RewriteEngine On/a RewriteRule ^\\?p=([0-9]+)$ /post/$1 [R=301,L]' /var/www/site/.htaccess
CI/CD пайплайн в GitHub Actions
Для команд, которые деплоят изменения через GitHub, можно автоматически обновлять .htaccess и конфиги при каждом релизе:
name: Deploy ЧПУ config
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Upload .htaccess
uses: appleboy/scp-action@v0.1.4
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_KEY }}
source: ".htaccess"
target: "/var/www/site/"
...Это избавляет от ручного копирования файлов на сервер при каждом изменении конфига.
Проверка ЧПУ и типичные ошибки
Настроили – теперь нужно убедиться, что всё работает правильно. Вот самые частые проблемы и способы их решить.
Ошибка 404 на старых ссылках
Самая распространённая проблема при миграции с динамических URL. Если старый адрес site.ru/?p=123 перестал работать, но на него ссылаются другие сайты или он проиндексирован – вы теряете и трафик, и ссылочный вес.
Решение: 301-редирект (постоянное перенаправление) со старых адресов на новые. Для Apache в .htaccess:
Redirect 301 /?p=123 /blog/nazvanie-statiИли через RewriteRule для массовых редиректов по шаблону:
RewriteRule ^index\.php\?p=([0-9]+)$ /post/$1 [R=301,L]Проверить наличие битых ссылок можно в Google Search Console – раздел "Покрытие" покажет все страницы с ошибками 404.
Дубли страниц
Если один контент доступен по нескольким адресам (например, site.ru/blog/statya и site.ru/?id=55), поисковик видит дубль и не знает, какую версию ранжировать.
Решение:
• Добавьте тег <link rel="canonical" href="основной-URL"> на дублирующиеся страницы.
• Закройте старые динамические адреса через robots.txt, если они больше не нужны пользователям:Disallow: /*?id=
Disallow: /*?page=
Быстрая проверка через curl
Не обязательно ждать, пока Google переобойдёт сайт. Проверить редиректы можно прямо в терминале:
curl -I -L site.ru/?p=123Флаг -I выводит только заголовки, -L следует по редиректам. Вы увидите цепочку ответов и финальный код 200 – если всё настроено правильно.
Онлайн-альтернатива – сервисы вроде redirect-checker.org, где можно вбить URL и увидеть всю цепочку редиректов визуально.
ЧПУ и Core Web Vitals: неочевидная связь
ЧПУ и Core Web Vitals: неочевидная связьCore Web Vitals (ключевые показатели веб-производительности, которые Google использует при ранжировании) – это LCP (скорость загрузки основного контента), FID (отклик на первое действие) и CLS (стабильность верстки при загрузке). Казалось бы, причём здесь URL?
Связь есть, и вот почему:
Короткие, чистые URL быстрее парсируются браузером. Когда браузер разбирает ссылки на странице – в навигации, в тегах <a>, в карте сайта – короткий URL обрабатывается быстрее. Это микроскопическое улучшение, но в совокупности с другими оптимизациями оно влияет на LCP.
ЧПУ улучшает кэшируемость. CDN и браузерный кэш работают по URL как ключу. Динамический URL с параметрами часто обходит кэш – каждый запрос летит на сервер. ЧПУ без параметров кэшируется предсказуемо, что снижает время отклика (TTFB – Time To First Byte, время до первого байта ответа).
Mobile-first индексация. Google оценивает мобильную версию страницы. Длинные динамические URL в мобильных браузерах часто обрезаются в адресной строке и выглядят некрасиво – что косвенно влияет на поведенческие факторы.
Проверить влияние можно в PageSpeed Insights – запустите анализ до и после перехода на ЧПУ, сравните метрику TTFB в разделе "Диагностика".
Кейс: миграция интернет-магазина на ЧПУ
Один из проектов в моей практике – интернет-магазин бытовой техники на OpenCart. До миграции все страницы категорий и товаров работали на динамических URL вида site.ru/index.php?route=product/category&path=59.
После перехода на ЧПУ (site.ru/bytovaya-tekhnika/holodilniki) и настройки 301-редиректов со всех старых адресов:
• Органический трафик вырос на 37% за три месяца.
• Глубина просмотра увеличилась – пользователи лучше понимали структуру каталога и реже "терялись".
• Конверсия из поиска выросла примерно на 12% – предположительно за счёт роста доверия к понятным адресам страниц в выдаче.Анализ логов Nginx показал снижение времени отклика на страницы категорий: CDN начал отдавать их из кэша значительно чаще, потому что URL стали предсказуемыми и без параметров.
Ключевой момент, который многие упускают: миграция прошла без потери трафика именно потому, что каждый старый URL получил 301-редирект. Не было ни одной страницы с ошибкой 404 в Google Search Console в течение первой недели после перехода.
Итог: что делать прямо сейчас
Итог: что делать прямо сейчасЧПУ URL – это не "украшение" для сайта, а базовая техническая настройка, которая влияет на SEO, производительность и поведение пользователей одновременно.
Вот минимальный чеклист для старта:
• [ ] Проверьте текущую структуру URL своего сайта – понятна ли она человеку с первого взгляда?
• [ ] Включите ЧПУ в настройках CMS (WordPress, Joomla, OpenCart) или настройте mod_rewrite / Nginx try_files.
• [ ] Для каждой страницы со старым динамическим адресом настройте 301-редирект.
• [ ] Добавьте canonical на страницы, которые могут быть доступны по нескольким адресам.
• [ ] Проверьте индексацию через Google Search Console через 1–2 недели после изменений.
• [ ] Если используете CDN – проверьте, что новые ЧПУ-адреса корректно кэшируются.Первый шаг – войдите в настройки своей CMS и посмотрите, включён ли SEF (Search Engine Friendly URLs). Если нет – это займёт пять минут. И это уже будет заметный шаг к более читаемому и ранжируемому сайту.
FAQ
Нужно ли менять URL на уже работающем сайте с хорошими позициями?
Если сайт давно проиндексирован и занимает хорошие позиции – менять URL с риском потерять трафик стоит только при наличии чёткого плана: полный маппинг старых и новых адресов, 301-редиректы на каждый из них, мониторинг в Search Console после миграции. Без этого можно откатиться на несколько месяцев назад. Если позиции слабые или сайт новый – менять нужно сразу.
Влияет ли длина URL на SEO?
Прямого жёсткого лимита нет, но Google рекомендует делать URL короткими и описательными. По опыту, адреса длиннее 100–120 символов хуже отображаются в выдаче и обрезаются в сниппете. Оптимально – до 60–80 символов вместе с доменом.
Как настроить ЧПУ на Nginx, если сайт на PHP без CMS?
Добавьте в конфиг виртуального хоста директиву try_files $uri $uri/ /index.php?$query_string внутри блока location /. Затем в самом index.php парсите $_SERVER['REQUEST_URI'] – это и будет ваш человекочитаемый путь, который нужно разобрать и направить на нужный обработчик.
Как проверить, что 301-редиректы работают корректно и не образуют цепочки?
Запустите curl -I -L старый-URL в терминале и посмотрите на цепочку ответов. Правильно: один редирект 301, затем 200. Плохо: 301 → 301 → 200 (цепочка редиректов). Каждый лишний редирект в цепочке замедляет загрузку и "теряет" часть ссылочного веса.
Нужно ли обновлять карту сайта после миграции на ЧПУ?
Да, обязательно. Сгенерируйте новый sitemap.xml с актуальными ЧПУ-адресами и загрузите его в Google Search Console и Яндекс.Вебмастер. Это ускорит переобход и переиндексацию новых URL.Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.Используете ЧПУ на стадии проектирования сайта?100%Да10%Нет00%Хочу посмотреть ответы0Проголосовал 1 пользователь. Воздержался 1 пользователь.Теги:• seo
• структура сайта
• url
• url scheme
• url схема
• проектирование сайта
• проектирование сайтовХабы:• Разработка под e-commerce
• Поисковая оптимизация
• Интернет-маркетинг
Получайте больше инсайтов о систематизации бизнеса
Подписывайтесь на Telegram-канал Business Operations — ежедневные материалы о бизнес-процессах, операционном управлении и повышении эффективности
💬 Подписаться на канал→ Оригинальная статья