Skip to content

Всё для WordPress, веб-разработки — и не только

🔗 Как сбросить постоянные ссылки WordPress: 3 способа исправить ошибку 404

🔗 Как сбросить постоянные ссылки WordPress: 3 способа исправить ошибку 404

Знакомо: заходите на сайт, а там белый экран и заветные цифры 404. При этом главная открывается, админка работает, а сам пост или страница, нет. Вы проверяете URL, пересохраняете запись, очищаете кеш плагина, глухо.

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

Ниже, три способа сбросить постоянные ссылки: от самого простого (пара кликов в админке) до ручного вмешательства в базу через phpMyAdmin. После сброса ошибка 404 уходит, а структура URL остаётся нетронутой.

💡 Быстрый обзор:

  • Зайдите в админку WordPress и нажмите «Сохранить изменения» на странице постоянных ссылок.
  • Добавьте строку кода в functions.php темы, обновите сайт и удалите строку обратно.
  • Очистите поле rewrite_rules в таблице wp_options через phpMyAdmin.
  • Проверьте результат: откройте проблемную страницу и убедитесь, что 404 ушла.

Что такое постоянные ссылки и зачем их сбрасывать

Постоянные ссылки (permalinks), это человекочитаемые URL страниц и постов WordPress. Вместо ?p=123 вы видите /blog/kak-sbrosit-ssylki/. За преобразование отвечает механизм rewrite rules, набор правил, который движок хранит в базе данных и (при определённых настройках) в файле .htaccess.

При добавлении нового типа записей, смене структуры ссылок или после миграции сайта правила перезаписи могут не обновиться автоматически. WordPress продолжает использовать старый кеш правил, и страница, которая физически существует, отдаёт 404. Сброс (flush) принудительно перестраивает rewrite rules с нуля: удаляет сохранённые правила и генерирует актуальные.

Это не «удаление» постоянных ссылок, структура URL, заданная в настройках, остаётся прежней. Меняется только внутренний кеш правил маршрутизации. Операция абсолютно безопасна: темы, плагины и контент не затрагиваются.

Способ 1. Через панель управления WordPress

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

  • Зайдите в консоль WordPress: ваш-сайт.com/wp-admin.
  • Перейдите в Настройки → Постоянные ссылки.
  • Ничего не меняйте в настройках, просто прокрутите страницу вниз.
  • Нажмите синюю кнопку «Сохранить изменения».
Кнопка сохранения на странице постоянных ссылок WordPress

WordPress молча перестроит rewrite rules и обновит .htaccess (если он используется). Никаких уведомлений об успехе не появится, просто откройте проблемную страницу в новой вкладке браузера и проверьте, ушла ли ошибка.

Почему это работает? При нажатии кнопки «Сохранить изменения» движок вызывает внутреннюю функцию flush_rewrite_rules(), ту же самую, что разработчики используют в коде. Разница только в способе запуска: здесь вы кликаете мышкой, а не пишете PHP.

Метод решает проблему в абсолютном большинстве случаев. Не помогло, переходите к способу 2.

Способ 2. Через functions.php темы

Если админка не грузится или кнопка «Сохранить» не дала результата, сбросьте правила программно. Для этого нужен доступ к файлам сайта: через FTP, файловый менеджер хостинга или встроенный редактор тем.

Важно: flush_rewrite_rules(), дорогая операция. Она перестраивает всю структуру URL и при вызове на каждом хите ощутимо замедляет сайт. Поэтому мы добавим функцию однократно, обновим сайт и сразу удалим строку.

  • Откройте файл functions.php активной темы. Путь: /wp-content/themes/ваша-тема/functions.php.
  • В самый конец файла, перед закрывающим ?> (если он есть), добавьте одну строку:
1flush_rewrite_rules();
  • Сохраните файл.
  • Обновите любую страницу сайта в браузере, функция отработает при первом же хите.
  • Снова откройте functions.php и удалите добавленную строку. Обязательно.
Код flush rewrite rules в редакторе темы WordPress

Функция сработала один раз, правила перестроены, код убран, сайт работает в штатном режиме без лишней нагрузки. Этот же подход используют разработчики плагинов: flush_rewrite_rules() вешают на хук активации, а не на каждый запрос.

Альтернатива для тех, кто не хочет трогать functions.php напрямую: плагин Code Snippets. Создайте новый сниппет с тем же кодом, выполните его один раз (кнопка «Execute») и удалите. Результат идентичен.

Способ 3. Через phpMyAdmin, прямой сброс правил в базе

Самый глубокий уровень, ручная очистка rewrite rules напрямую в таблице wp_options. Применяйте, когда нет доступа ни к админке, ни к файлам темы (например, белый экран смерти на всём сайте, кроме базы данных).

Обязательно сделайте резервную копию базы перед любыми правками в phpMyAdmin. Одно неверное действие в SQL-редакторе может повредить сайт необратимо.

  • Зайдите в phpMyAdmin через панель хостинга (cPanel, ISPmanager, DirectAdmin), раздел «Базы данных».
  • В левой колонке выберите базу данных вашего сайта WordPress.
  • Перейдите на вкладку SQL в верхнем меню.
  • Вставьте запрос в текстовое поле и нажмите «Выполнить» (Go):
1SELECT * FROM wp_options WHERE option_name = 'rewrite_rules'
  • В результатах вы увидите одну строку. Нажмите «Изменить» (карандаш) напротив неё.
  • Найдите поле option_value, длинный текст с сериализованными данными. Выделите всё содержимое поля и удалите, затем сохраните.
Редактирование поля rewrite_rules в phpMyAdmin

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

Внимание: в некоторых конфигурациях хостинга префикс таблиц может отличаться от wp_. Если ваш префикс другой (например, wpxy_), замените wp_options на wpxy_options. Уточнить префикс можно в файле wp-config.php, строка $table_prefix.

Видео: сброс постоянных ссылок на практике

Если удобнее смотреть, а не читать, в этом видео показан весь процесс сброса постоянных ссылок первым способом, от входа в админку до проверки результата:

⁉️🤔 Частые вопросы

Пропадут ли мои URL после сброса постоянных ссылок?

Нет. Сброс (flush) не меняет структуру ссылок, заданную в «Настройки → Постоянные ссылки». Он только перестраивает внутренний кеш правил маршрутизации. Все ваши адреса /blog/, /product/ и /category/ останутся ровно теми же. Исключение: если вы вручную изменили структуру в настройках перед сохранением, тогда URL перестроятся по новому шаблону.

Нужно ли устанавливать плагин для сброса постоянных ссылок?

Для разовой операции, точно нет. Три способа выше покрывают все сценарии без дополнительного софта. Плагины вроде Rewrite Rules Inspector имеет смысл ставить, только если вы регулярно регистрируете кастомные типы записей и таксономии в коде и хотите видеть состояние правил в реальном времени. Для обычного исправления 404 это оверкилл.

Сброс через админку не помог. Что дальше?

Проверьте, не переопределён ли файл .htaccess другим плагином (кеширования, безопасности, SEO). Временно деактивируйте подозрительные плагины и повторите сброс. Если не помогло, переходите к способу 2 (PHP), он гарантированно вызывает ту же функцию flush_rewrite_rules() в обход любых фильтров админки.

Можно ли сбросить правила через WP-CLI?

Да, если на сервере установлен WP-CLI, команда wp rewrite flush делает ровно то же самое из командной строки. Это самый быстрый способ для разработчиков, работающих через SSH. Выполняется мгновенно, не требует открытия браузера и не оставляет следов в коде темы.

Что делать, если после сброса ошибка 404 осталась?

Причина не в постоянных ссылках. Проверьте три вещи: (1) не удалена ли сама страница или пост физически, (2) не конфликтует ли slug с другим контентом или таксономией, (3) не блокирует ли запросы файл .htaccess с некорректными правилами редиректа. В последнем случае временно переименуйте .htaccess в .htaccess.bak, сохраните постоянные ссылки через админку (WordPress создаст новый .htaccess) и проверьте снова.

Сбросили ссылки, что дальше?

Вы выполнили сброс одним из трёх способов, и страница открылась. Отлично. Но если 404 появилась один раз, она может вернуться: после обновления плагина, смены темы или правок в кастомных типах записей. Положите эту инструкцию в закладки, первый способ (кнопка «Сохранить» в админке) вы теперь знаете наизусть и сделаете за десять секунд.

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