Удаление category и tag из URL WordPress: 7 шагов для чистых permalinks

Почему стоит удалять /category/ и /tag/ из URL

Чистый URL улучшает восприятие пользователем, повышает кликабельность в SERP и упрощает работу с аналитикой. По данным тестам скорости PHP, сокращённые ссылки слегка ускоряют обработку запросов, а Google явно отдает предпочтение лаконичным структурам.

Шаг 1. Настройка базовых permalinks

Перейдите в Настройки → Постоянные ссылки и выберите структуру / %postname% /. После сохранения WordPress уже не будет добавлять /category/ в архивы, но /tag/ останется.

Шаг 2. Удаление /category/ через .htaccess

Если вы используете Apache, добавьте правило редиректа в файл .htaccess в корне сайта:

# Убираем /category/ из URL
RewriteEngine On
RewriteBase /
RewriteRule ^category/(.*)$ /$1 [R=301,L]

Это перенаправит любые запросы типа example.com/category/novosti/ на example.com/novosti/ без потери индексации.

Шаг 3. Плагины для автоматического удаления

  • Remove Category Base – бесплатный, удаляет базу категории и автоматически создаёт 301‑редиректы.
  • Yoast SEO – в разделе «Подключения» есть опция «Убрать базу тегов», но работает только при включённом Cloudflare WAF для кэш‑правил.
  • WP No Category Base – WPML compatible – поддерживает многоязычность.

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

Шаг 4. Ручной код в functions.php

Для полного контроля добавьте следующий сниппет в тему (или в плагин‑модуль):

// Убираем базу категории и тега
add_filter('category_rewrite_rules', '__return_empty_array');
add_filter('tag_rewrite_rules', '__return_empty_array');

// Перезаписываем правила таксономий без базовых сегментов
function custom_taxonomy_rewrites() {
    $taxonomies = ['category', 'post_tag'];
    foreach ( $taxonomies as $tax ) {
        $terms = get_terms([ 'taxonomy' => $tax, 'hide_empty' => false ]);
        foreach ( $terms as $term ) {
            $slug = $term->slug;
            add_rewrite_rule("^{$slug}/?", "index.php?{$tax}={$slug}", 'top');
        }
    }
}
add_action('init', 'custom_taxonomy_rewrites');

// 301 редиректы со старых URL
function redirect_old_taxonomy_urls() {
    $request = trim($_SERVER['REQUEST_URI'], '/');
    if ( preg_match('#^(category|tag)/(.+)$#', $request, $matches) ) {
        wp_redirect(home_url('/' . $matches[2] . '/'), 301);
        exit;
    }
}
add_action('template_redirect', 'redirect_old_taxonomy_urls');

После добавления кода выполните Настройки → Постоянные ссылки → Сохранить изменения, чтобы обновить правила.

Шаг 5. Настройка 301‑редиректов для SEO

Редиректы обязательны, иначе поисковые системы могут посчитать удалённые страницы 404 и потерять вес. Если вы пользуетесь плагином Redirection, добавьте правило:

Source URL: ^/category/(.*)$
Target URL: /$1
HTTP Code: 301 – Permanent Redirect

Аналогично для /tag/. Проверьте корректность через инструменты ускорения — они покажут, что запросы теперь попадают напрямую в кэш.

Шаг 6. Проверка SEO‑влияния

После внедрения изменений запустите проверку в Google Search Console – раздел «Покрытие». Убедитесь, что старые URL находятся в статусе «Перенаправлен» и нет 404‑ошибок. Также стоит обновить sitemap.xml, чтобы поисковики сразу получили новые ссылки.

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

Шаг 7. Итоги и рекомендации

Удаление базовых сегментов из URL WordPress – простая, но мощная оптимизация. Сочетайте правильные permalinks, редиректы и, при необходимости, плагин или ручной код. Регулярно проверяйте 404‑лог и Search Console, чтобы избежать потери трафика. В итоге ваш сайт получит более чистые ссылки, улучшится показатель CTR и ускорится отдача контента.

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

Сломаются ли внутренние ссылки после удаления /category/?

Нет, если настроить 301‑редиректы. Плагин Redirection или код в functions.php автоматически перенаправят старые ссылки на новые.

Можно ли убрать /tag/ без плагинов?

Да. Достаточно добавить правила переписывания в .htaccess и функции‑фильтры в functions.php, как показано в статье.

Нужен ли кеш после изменения URL‑структуры?

Обязательно. После правок очистите кэш в плагинах (WP Super Cache, LiteSpeed) и в CDN (например, Cloudflare), иначе пользователи могут увидеть старые ссылки.

Как проверить, что редиректы работают корректно?

Воспользуйтесь онлайн‑инструментами типа httpstatus.io или встроенными отчетами Google Search Console – они покажут статус 301 для всех старых URL.