Краткий ответ: если WordPress показывает ошибку 404 на всех страницах, а главная страница открывается, чаще всего проблема в постоянных ссылках, файле .htaccess, rewrite rules, настройках Apache/Nginx, кеше, конфликте плагина, теме или неправильной миграции сайта. Начинать нужно с пересохранения постоянных ссылок, проверки .htaccess и серверных правил, а не с удаления страниц.
Важно отличать эту проблему от ситуации, когда сайт не открывается вообще. Если главная работает, а записи, страницы, товары, рубрики или услуги показывают 404, WordPress обычно видит сайт, но не может правильно обработать красивые URL.
Если после простых действий 404 остаётся, нужно проверить сервер, тему, плагины и логи. Для сложных случаев может понадобиться техническая доработка WordPress, особенно если проблема появилась после переноса, обновления, смены темы или изменения структуры URL.
Ошибка 404 означает, что сервер или WordPress не нашёл страницу по указанному адресу. Но когда 404 появляется сразу на всех внутренних страницах, а главная открывается, чаще всего сами страницы не удалены. Проблема обычно в маршрутизации URL.
WordPress использует постоянные ссылки. Красивый URL вида /usluga/ должен быть преобразован сервером в запрос к WordPress. Если rewrite rules не работают, сервер не передаёт запрос в WordPress, и пользователь видит 404.
| Симптом | Возможная причина | Что проверить |
|---|---|---|
| Главная работает, все страницы 404 | сломаны постоянные ссылки или .htaccess | Настройки → Постоянные ссылки, .htaccess |
| 404 после переноса сайта | не перенеслись rewrite rules или сервер отличается | Apache/Nginx, AllowOverride, config сайта |
| 404 после смены хостинга | сервер не читает .htaccess или нет rewrite module | mod_rewrite, Nginx location rules |
| 404 только у товаров WooCommerce | сломан product base или flush rewrite rules | WooCommerce permalinks, product slug |
| 404 только у кастомных post types | не обновлены rewrite rules CPT | register_post_type, rewrite, flush rules |
| 404 после установки плагина | конфликт rewrite rules или slug | плагины, slug страниц, debug.log |
| 404 только на русском/украинском URL | кодировка, TranslatePress, редиректы, кеш | языковые URL, плагины перевода, permalink |
| 404 в админке при preview | тема или код меняет query | functions.php, pre_get_posts, theme filters |
Если страницы показывают не 404, а 403, это другая проблема: доступ запрещён. Для такого случая есть отдельная статья WordPress показывает ошибку 403.
Диагностика должна идти от простого к сложному. В большинстве случаев 404 на всех страницах WordPress решается пересохранением постоянных ссылок или восстановлением .htaccess. Но если сайт на Nginx, после миграции или с кастомными типами записей, может понадобиться проверка server config.
Если главная страница открывается, а внутренние страницы нет, это почти всегда проблема маршрутизации. Если не открывается и главная, смотрите более общий материал Сайт WordPress не открывается: что делать.
Самый быстрый тест — открыть админку WordPress и перейти:
Настройки → Постоянные ссылки → Сохранить изменения
Менять структуру не обязательно. Само сохранение обновляет rewrite rules WordPress. После этого проверьте страницы в браузере.
Если после пересохранения всё заработало, причина была в сброшенных правилах постоянных ссылок. Такое бывает после обновлений, миграции, смены темы, установки плагинов или регистрации кастомных типов записей.
На Apache-серверах WordPress использует .htaccess для обработки красивых URL. Если файл удалён, повреждён или сервер его не читает, внутренние страницы могут отдавать 404.
Файл должен находиться в корне сайта:
/.htaccess
Проверьте, есть ли в нём стандартный блок WordPress. Если его нет, WordPress может не передавать запросы на index.php.
Если .htaccess правильный, но не работает, сервер может его игнорировать. На VPS это часто связано с отключённым mod_rewrite или настройкой AllowOverride None.
Что проверить:
Nginx не использует .htaccess. Если сайт работает на Nginx, правила WordPress должны быть прописаны в конфигурации server block.
Для WordPress обычно нужна логика:
try_files $uri $uri/ /index.php?$args;
Если этой строки нет или она стоит не в том location-блоке, главная может работать, а внутренние страницы будут показывать 404.
Иногда 404 вызывают не rewrite rules, а плагин или тема. Особенно если проблема появилась после обновления, установки SEO-плагина, мультиязычности, кеша, редиректов или custom post type.
Если 404 появился после установки или обновления плагина, проверьте инструкцию после обновления плагина сломался сайт WordPress.
Если не хотите рисковать сайтом и тратить время на эксперименты, можно оставить заявку. Я посмотрю задачу и предложу аккуратное решение.
Исправлять 404 на всех страницах нужно по шагам. Сначала простые действия в админке, потом .htaccess, потом сервер, потом плагины, тема и база данных.
Откройте:
Настройки → Постоянные ссылки
Нажмите “Сохранить изменения”. После этого проверьте несколько внутренних страниц.
Если проблема ушла, дополнительно очистите кеш сайта и CDN. Если 404 возвращается снова, значит кто-то постоянно сбрасывает или перезаписывает rewrite rules.
Перед изменением сохраните старый .htaccess. Потом вставьте стандартный блок WordPress.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
После сохранения файла проверьте сайт. Если используются дополнительные редиректы, кеш или правила безопасности, добавляйте их аккуратно и проверяйте после каждого блока.
Если WordPress не может записать .htaccess, пересохранение постоянных ссылок может не сработать.
Обычно для файла подходит 644, но на некоторых хостингах политика может отличаться.
Если сайт на Nginx, .htaccess не поможет. Нужно править server block. В location / должна быть обработка через index.php.
location / {
try_files $uri $uri/ /index.php?$args;
}
После изменения конфигурации нужно проверить синтаксис и перезагрузить Nginx. Делать это стоит только при доступе к серверу и понимании конфигурации.
Если 404 только у кастомных записей, товаров, кейсов, документов или портфолио, возможно проблема в register_post_type, rewrite slug или конфликте slug с существующей страницей.
Проверьте:
Если 404 только у товаров или категорий товаров, проверьте WooCommerce → Настройки → Постоянные ссылки. Иногда конфликтует product base, category base или slug страницы магазина.
Важно: код и команды ниже могут повлиять на доступность сайта, постоянные ссылки, товары WooCommerce, страницы, редиректы и SEO. Перед изменениями сделайте backup файлов и базы. Не меняйте серверную конфигурацию без понимания, особенно на рабочем сайте.
Куда выполнять: SSH в корне сайта.
wp rewrite flush
Если на сайте есть custom post types, после их регистрации можно выполнить:
wp rewrite flush --hard
Команда –hard пытается обновить .htaccess, если сервер и права позволяют это сделать.
wp option get permalink_structure
Пример для структуры “Название записи”.
wp option update permalink_structure '/%postname%/'
wp rewrite flush --hard
Куда вставлять: файл .htaccess в корне сайта.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Куда вставлять: server block Nginx внутри location /. После изменения нужно проверить конфиг.
location / {
try_files $uri $uri/ /index.php?$args;
}
Проверка конфигурации Nginx:
nginx -t
Перезагрузка Nginx:
systemctl reload nginx
Куда выполнять: SSH на сервере.
apache2ctl -M | grep rewrite
Если модуль выключен, на Ubuntu/Debian обычно используют:
a2enmod rewrite
systemctl restart apache2
ls -la .htaccess
Обычно можно использовать:
chmod 644 .htaccess
После исправления WordPress должен снова открывать внутренние страницы, записи, рубрики, товары и другие URL с красивыми постоянными ссылками.
Хороший результат:
Если одна страница, рубрика, товар или custom post type использует одинаковый slug, WordPress может неправильно определить нужный объект. Особенно часто это бывает с товарами, услугами, категориями и страницами с одинаковыми адресами.
Если 404 появляется только в языковых версиях сайта, проверьте TranslatePress, WPML, Polylang или другой multilingual-плагин. Проблема может быть в языковом префиксе, кешировании, slug, редиректах или sitemap.
Плагины редиректов, SEO-плагины и .htaccess могут отправлять пользователя на URL, которого нет. Проверьте цепочки 301/302 и убедитесь, что финальный адрес существует.
Если даже URL вида ?p=123 показывает 404, проблема может быть не в .htaccess, а в теме или кастомном коде, который меняет основной запрос WordPress.
Код в теме или плагине может неправильно менять главный запрос. Например, фильтр должен работать только на главной, но применяется ко всем страницам и ломает выборку.
После исправления постоянных ссылок очистите:
Если 404 на всех страницах, почти всегда проблема не в самих страницах. Удаление контента только ухудшит ситуацию.
В .htaccess могут быть важные редиректы, правила кеша, защиты и HTTPS. Перед заменой сохраните старую версию.
Nginx не использует .htaccess. Если сайт на Nginx, нужно проверять конфигурацию сервера.
Кеш может продолжать отдавать старые 404, даже если постоянные ссылки уже исправлены.
Если обычные страницы работают, а товары, кейсы или услуги 404, нужно проверять CPT, rewrite slug и flush rewrite rules.
После переноса сайта часто меняется сервер, путь к сайту, .htaccess, Nginx config, DocumentRoot или доступность mod_rewrite.
Если URL менялись осознанно, старые адреса должны вести на новые через 301. Иначе в Google появятся реальные 404.
Возможная причина: постоянные ссылки, .htaccess, Apache rewrite или Nginx try_files.
Что делать: пересохранить постоянные ссылки, восстановить .htaccess, проверить mod_rewrite или Nginx config.
Возможная причина: сервер не читает .htaccess, другой веб-сервер, неправильный DocumentRoot, не перенеслись правила.
Что делать: проверить .htaccess, Nginx/Apache config, AllowOverride, mod_rewrite, путь к сайту и кеш.
Возможная причина: product base, category base, конфликт slug, не обновлены rewrite rules.
Что делать: проверить WooCommerce permalinks, страницу Shop, пересохранить постоянные ссылки и очистить кеш.
Возможная причина: ошибка register_post_type, rewrite slug, отключён плагин, конфликт URL.
Что делать: проверить код регистрации CPT, plugin activation, slug, flush rewrite rules.
Возможная причина: языковой префикс, TranslatePress/WPML/Polylang, кеш, sitemap или редиректы.
Что делать: пересохранить permalinks, проверить языковые настройки, очистить кеш и проверить sitemap.
Возможная причина: плагин зарегистрировал новый slug, изменил rewrite rules или конфликтует с существующей страницей.
Что делать: отключить плагин для теста, пересохранить постоянные ссылки, проверить slug-конфликты.
Возможная причина: не .htaccess, а тема, pre_get_posts, custom query, статус записи или проблема базы.
Что делать: переключиться на стандартную тему, отключить плагины, проверить functions.php и debug.log.
Чаще всего из-за постоянных ссылок, .htaccess, rewrite rules, Nginx try_files, Apache mod_rewrite, кеша, плагина, темы или ошибки после миграции сайта.
Зайдите в Настройки → Постоянные ссылки и нажмите “Сохранить изменения”. Затем проверьте .htaccess, кеш, Apache/Nginx правила и конфликт плагинов.
Главная открывается напрямую через index.php, а внутренние красивые URL требуют rewrite rules. Если rewrite не работает, внутренние страницы получают 404.
Нужно проверить server block и добавить в location / правило try_files $uri $uri/ /index.php?$args;. .htaccess на Nginx не работает.
Обычно потому что сломаны постоянные ссылки или rewrite rules. Главная открывается, а внутренние URL не передаются правильно в WordPress.
Перейдите в Настройки → Постоянные ссылки и нажмите “Сохранить изменения”. Если не помогло, проверьте .htaccess, mod_rewrite, Nginx config, кеш и плагины.
Да. Если .htaccess удалён, повреждён или сервер его не читает, WordPress не сможет обрабатывать красивые URL.
Проверить конфигурацию Nginx. Для WordPress нужен try_files $uri $uri/ /index.php?$args; в правильном location-блоке.
После переноса мог измениться сервер, путь, DocumentRoot, .htaccess, Nginx config, mod_rewrite или AllowOverride. Нужно проверить серверные правила и пересохранить permalinks.
Причина может быть в product base, category base, slug-конфликте, странице магазина или не обновлённых rewrite rules.
Можно временно переименовать для теста, но перед этим сохраните копию. После проверки нужно создать новый стандартный .htaccess WordPress.
Возможны проблемы с правами .htaccess, Apache AllowOverride, Nginx config, кешем, конфликтом плагина, темой или custom post type.
Если даже URL вида ?p=123 показывает 404, временно переключитесь на стандартную тему. Если страницы заработали, проблема может быть в functions.php, pre_get_posts или кастомных запросах темы.
Если 404 появился после миграции, на Nginx/VPS, в WooCommerce, в языковых версиях, у custom post types или после обновления плагинов, лучше проверить сервер, rewrite rules, тему, плагины и логи аккуратно.
Если WordPress показывает ошибку 404 на всех страницах, а главная работает, чаще всего страницы не удалены. Проблема обычно в постоянных ссылках, .htaccess, rewrite rules, Apache/Nginx, кеше, плагине, теме или миграции.
Безопасный порядок такой: пересохранить постоянные ссылки, проверить .htaccess, очистить кеш, проверить Apache mod_rewrite или Nginx try_files, затем проверить плагины, тему, WooCommerce и custom post types.
Главное — не удалять страницы и не менять URL наугад. Сначала нужно восстановить маршрутизацию WordPress, а потом проверить, что все важные страницы, записи, товары, рубрики и sitemap снова работают корректно.
Об авторе