Как исправить 404 на страницах товаров WooCommerce после смены постоянных ссылок

Если после смены структуры постоянных ссылок в WooCommerce карточки товаров начали отдавать 404, проблема обычно не в самих товарах, а в правилах перезаписи, старых ссылках в базе или конфликте со страницами-ярлыками. Внешне это выглядит как «товар есть, а URL не открывается».

Ниже разберём, как быстро локализовать причину, что именно поправить и как проверить, что 404 больше не возвращается.

Когда это действительно проблема permalink, а не товара

Сначала стоит отделить поломку URL от других ошибок. У товара может быть статус publish, но страница всё равно не открывается из-за сбитых правил маршрутизации. Это часто происходит после смены:

  • структуры постоянных ссылок в Настройки → Постоянные ссылки;
  • базы URL у товаров или категорий;
  • плагина кеширования, который отдал старый 404 из кеша;
  • страницы или записи с тем же слагом, что и у товара.

Быстрая диагностика проблемы

Проверьте несколько вещей до правки кода:

  • открывается ли сам товар в админке и нет ли у него черновика или скрытого статуса;
  • не совпадает ли slug товара со slug страницы, категории или произвольного типа записи;
  • сохранялись ли Постоянные ссылки после изменения структуры;
  • не кэширует ли сервер или CDN старую ошибку 404;
  • не включён ли плагин, который меняет URL товаров, хлебные крошки или базу категорий.

Если в админке товар открывается, а на фронтенде 404 только у части карточек, чаще всего виноваты rewrite rules или конфликт slug.

Пошаговое решение

1. Сбросьте правила перезаписи без изменения структуры

Самый безопасный первый шаг — просто пересохранить постоянные ссылки. Это принудительно обновляет rewrite rules WordPress и часто решает проблему сразу.

  1. Откройте Настройки → Постоянные ссылки.
  2. Ничего не меняя, нажмите Сохранить изменения.
  3. Проверьте проблемный URL товара.

Если сайт на сервере с жёстким кешем, после этого очистите кеш страницы и, если есть, кеш объекта.

2. Проверьте конфликт slug у товара и страницы

Если у товара и страницы одинаковый ярлык, WordPress может отдавать не тот объект или 404. Это особенно заметно, когда в магазине есть страницы вроде /shop/, /cart/, /checkout/ и одновременно товары или категории с похожими именами.

Проверка простая: временно измените slug проблемного товара на уникальный и сохраните. Если URL заработал, конфликт найден.

3. Убедитесь, что WooCommerce не использует старую базу URL

Если меняли структуру ссылок в WooCommerce, проверьте настройки в WooCommerce → Настройки → Товары → Постоянные ссылки. Ошибка часто возникает, когда:

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

После изменения базы снова пересохраните постоянные ссылки в WordPress.

4. Добавьте точечный редирект со старого URL на новый

Если старые ссылки уже индексируются или используются в рассылках, лучше не оставлять 404. Для точечного редиректа можно использовать код в мини-плагине или functions.php. Пример ниже делает 301 с одного старого пути на новый:

<?php
add_action('template_redirect', function () {
    if (is_admin()) {
        return;
    }

    $request_uri = $_SERVER['REQUEST_URI'] ?? '';

    if ($request_uri === '/product/old-product-name/' || $request_uri === '/old-product-name/') {
        wp_redirect(home_url('/shop/new-product-name/'), 301);
        exit;
    }
});

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

5. Очистите кеш после правок

После сброса permalink и редиректов обязательно очистите:

  • кеш плагина;
  • серверный кеш, если он есть;
  • CDN-кеш;
  • кеш браузера для проверки в инкогнито.

Иначе можно принять старый 404 за новую ошибку.

Если нужен массовый контроль URL: сравнение подходов

ПодходКогда подходитМинус
Сохранить permalink в админкеПосле смены структуры ссылок, если 404 появились сразуНе решает конфликт slug и старые внешние ссылки
Редирект через кодДля нескольких старых URL, которые уже в индексе или рассылкахНужно поддерживать список вручную
Плагин редиректовЕсли редиректов много и нужен интерфейс для менеджераДополнительная нагрузка и риск ошибок в правилах

Для магазина с небольшим числом проблемных карточек обычно достаточно сброса permalink и точечных 301. Если URL меняются регулярно, имеет смысл централизовать редиректы, а не править их в шаблонах.

Проверка результата после внедрения

После исправления откройте проблемный товар в трёх сценариях:

  • в обычном окне браузера;
  • в режиме инкогнито;
  • через curl -I или аналогичный HTTP-проверщик.

Пример проверки через консоль:

curl -I https://example.com/shop/new-product-name/

В ответе должен быть 200 OK, а не 404 или цепочка редиректов. Если настроен 301 со старого адреса, проверьте и его:

curl -I https://example.com/old-product-name/

Здесь ожидается 301 Moved Permanently с корректным Location на новый URL.

Частые ошибки и как их исправить

Не пересохранили постоянные ссылки после миграции

Это самая частая причина. После переноса сайта, смены домена или обновления структуры URL WordPress не всегда сам обновляет rewrite rules. Решение — открыть настройки permalink и сохранить их вручную.

Остался старый кеш 404

Если сервер или CDN закешировал ошибку, вы будете видеть 404 даже после исправления. Очистите кеш на всех уровнях и проверьте ответ без кеша.

Slug товара совпадает со страницей

При одинаковом ярлыке WordPress может отдать не тот объект. Уникализируйте slug товара или страницы. Для магазина это особенно важно, если используются короткие человекочитаемые адреса.

Редирект сделан через JavaScript

Клиентский редирект не решает SEO-задачу и не спасает от 404 при обходе роботом. Для старых товарных URL нужен именно серверный 301.

Правка внесена в тему, а не в мини-плагин

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

Практические советы по безопасности и производительности

Если редиректов немного, не ставьте тяжёлый плагин ради одной задачи. Лишний плагин — это ещё один слой кода, который нужно обновлять и проверять после апдейтов WooCommerce.

Для массовых правок безопаснее:

  • хранить список редиректов отдельно от темы;
  • не делать сложные запросы к базе на каждом хите;
  • проверять, что редирект не создаёт цепочку 301 → 301 → 200;
  • не использовать wildcard-правила без теста на конфликт с категориями и архивами.

Если вы уже используете Clearfy Pro для чистки сайта и удаления дублей, его можно подключить как часть общей гигиены, но саму проблему 404 на товарах он не заменит. Здесь важнее корректные permalink, редиректы и отсутствие конфликтов URL.

В итоге рабочая схема обычно выглядит так: пересохранить постоянные ссылки, убрать конфликт slug, добавить точечный 301 для старых адресов и проверить ответ сервера. Это быстрее и надёжнее, чем искать проблему только в шаблоне или только в кеше.

Как добавить автоматическое удаление старых черновиков в WordPress
22.01.2026
Как настроить отложенный запуск задач в WordPress на базе WP-Cron
10.04.2026
Автоматическая сборка сайтов на WordPress с помощью WP-Kit
08.01.2026
Как автоматизировать управление ролями и правами в WordPress
18.01.2026
Как избежать проблем с кешированием WooCommerce при использовании Varnish
26.07.2026