После установки WordPress выдает 404 на всех страницах

404 ошибка на внутренних страницах WordPress после установки

Вы только что установили WordPress, настроили базовые параметры и создали первую страницу. Но при попытке перейти на неё получаете ошибку 404. Главная страница открывается, а все внутренние выдают сообщение «Страница не найдена». Это одна из самых частых проблем при первом запуске сайта, и она легко решаема.

Быстрое решение

В большинстве случаев проблема решается за полминуты:

  1. Зайдите в административную панель WordPress.
  2. Перейдите в раздел Настройки и выберите Постоянные ссылки.
  3. Ничего не меняя в полях, просто нажмите кнопку Сохранить изменения.

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

Сохранение постоянных ссылок в настройках WordPress

Почему WordPress выдает 404 на внутренних страницах

Ошибка 404 на всех страницах, кроме главной, это почти всегда сбой в системе постоянных ссылок. WordPress использует механизм перезаписи адресов, чтобы превращать красивые URL вида site.com/moya-statya/ в понятные системе запросы. Когда эта цепочка рвется, сервер не может найти нужный файл и отдает стандартную ошибку.

Ошибка 404 на всех внутренних страницах почти всегда означает, что сервер не понимает, как передать красивый URL в index.php. Пока WordPress работает через свой обработчик маршрутов, всё нормально. Как только эта цепочка рвётся, сервер честно ищет файл по такому пути, не находит его и отдаёт стандартную 404.

Основные причины сбоя:

  • Правила в файле .htaccess слетели или не создались (актуально для серверов Apache). Это часто случается после переноса сайта или ручного редактирования файлов.
  • В конфигурации Nginx отсутствует нужный блок try_files. Это характерно при переезде с обычного хостинга на VPS.
  • Правила перезаписи в базе данных повреждены из-за конфликта плагинов или некорректного обновления.

Пошаговая диагностика и исправление

Чтобы найти и устранить причину сбоя, двигайтесь от самых простых действий к более сложным. В большинстве случаев проблема решается уже на первом или втором этапе.
Постоянные ссылки в меню администратора WordPress

Шаг 1. Пересохраняем настройки постоянных ссылок

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

[Пометка для изображения 3: Пошаговый скриншот с навигацией в меню: Настройки → Постоянные ссылки]

  1. В админке перейдите в НастройкиПостоянные ссылки.
  2. Оставьте текущую структуру (обычно это «Название записи»).
  3. Нажмите Сохранить изменения.

В 70% случаев этого достаточно. Если страница по-прежнему не открывается, переходим к следующему шагу.

Шаг 2. Проверяем и восстанавливаем файл .htaccess

Файл .htaccess находится в корневой папке WordPress, там же, где лежат wp-config.php и папка wp-content. Это скрытый файл, поэтому убедитесь, что ваш FTP-клиент или файловый менеджер хостинга настроен на отображение скрытых файлов.

Что проверить Правильное значение
Наличие файла Должен существовать в корне сайта
Права доступа 644 (чтение для всех, запись для владельца)
Блок WordPress Должен содержать стандартные правила RewriteRule
Расположение Корневая папка WordPress (рядом с index.php)

Таблица 1. Параметры проверки файла .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

Если файла нет вообще, создайте его вручную с этим содержимым. Если файл есть, но код отсутствует или обрезан, вставьте блок целиком.

Важно: если WordPress установлен в подпапку (например, site.com/blog/), измените строку RewriteBase / на RewriteBase /blog/, а в правиле укажите RewriteRule . /blog/index.php [L].

Шаг 3. Проверяем настройки сервера Apache

Даже идеальный файл .htaccess не сработает, если сервер игнорирует его. В главной конфигурации Apache должна быть разрешена обработка таких файлов.

«AllowOverride None это самая частая причина, почему правки в .htaccess просто не работают. Убедитесь, что в конфиге Apache включён AllowOverride All для директории сайта.» Из обсуждений разработчиков на StackOverflow

Что нужно проверить:

  1. Откройте главный конфигурационный файл Apache (обычно это /etc/apache2/apache2.conf или /etc/httpd/conf/httpd.conf).
  2. Найдите блок <Directory "/путь/к/вашему/сайту">.
  3. Убедитесь, что там стоит AllowOverride All, а не None.
  4. Проверьте, что модуль mod_rewrite включен (строка LoadModule rewrite_module modules/mod_rewrite.so не должна быть закомментирована).
  5. Перезапустите Apache командой sudo systemctl restart apache2.

Схема взаимодействия Nginx и WordPress

Шаг 4. Настраиваем Nginx

Сервер Nginx не читает файлы .htaccess. Это особенность его архитектуры. Если вы перенесли сайт с обычного хостинга на VPS с Nginx, старые правила просто не будут работать.

Параметр Apache Nginx
Файл конфигурации .htaccess в корне сайта /etc/nginx/sites-available/ваш-сайт
Механизм перезаписи mod_rewrite Директива try_files
Применение изменений Автоматически (при наличии прав) Требует проверки и перезагрузки службы
Проверка синтаксиса Не требуется Обязательно nginx -t перед перезагрузкой

Таблица 2. Сравнение конфигурации для разных веб-серверов

Добавьте в конфигурацию вашего сайта следующий блок:

location / {
    try_files $uri $uri/ /index.php?$args;
}

После внесения изменений:

  1. Проверьте синтаксис командой nginx -t.
  2. Перезагрузите конфигурацию: sudo systemctl reload nginx.

Путь до сокета PHP-FPM зависит от версии PHP и дистрибутива операционной системы. Посмотрите его в выводе команды systemctl status php8.1-fpm или в файле пула.

Шаг 5. Ищем скрытые причины

Если все предыдущие шаги не помогли, проблема может быть глубже.

Конфликт плагинов или темы Некоторые плагины, которые регистрируют собственные типы записей или меняют структуру URL, могут конфликтовать с системой постоянных ссылок.

  1. Через FTP переименуйте папку /wp-content/plugins в plugins_old. Это отключит все плагины.
  2. Проверьте, исчезла ли ошибка 404.
  3. Если да, возвращайте исходное имя папки и включайте плагины по одному, проверяя работу сайта после каждого включения.

Несовместимость версий PHP и WordPress

Если вы используете PHP 8.0 или выше с устаревшей версией WordPress (ниже 5.6), может возникнуть проблема с обработкой запросов. Официальная полная поддержка PHP 8 появилась только в WordPress 5.6.

Физические файлы в корне сайта

Если в корневой папке WordPress есть файл с именем, совпадающим с адресом страницы (например, contact.php при наличии страницы /contact/), сервер может отдать приоритет физическому файлу. Проверьте корневую папку на наличие таких конфликтов.

Как избежать проблемы в будущем

Проблема с ошибкой 404 часто возникает из-за некачественных расширений, которые некорректно работают с маршрутизацией. При выборе инструментов для сайта обращайте внимание на регулярность обновлений и отзывы пользователей о совместимости.

Все расширения в каталоге IWS.BY проходят тщательное тестирование на совместимость с ядром WordPress и популярными конструкторами. Это минимизирует риск конфликтов и обеспечивает стабильную работу сайта без неожиданных сбоев.

Перед любыми изменениями в файлах конфигурации обязательно делайте резервную копию сайта и базы данных. Это позволит быстро восстановить работоспособность в случае ошибки.

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

Главная страница работает, но все внутренние выдают 404. Это точно проблема с постоянными ссылками?
Да, в большинстве случаев это именно проблема с правилами перезаписи. Начните с пересохранения настроек постоянных ссылок. Это самое простое и быстрое решение.
Я не могу зайти в админку WordPress, чтобы пересохранить ссылки. Что делать?
В этом случае нужно вручную проверить файл .htaccess. Если админка недоступна, проблема может быть в базе данных или в критическом конфликте плагинов. Попробуйте отключить плагины через переименование папки plugins по FTP.
После переноса сайта на другой хостинг появились 404 ошибки. В чём дело?
При переносе часто теряется файл .htaccess, особенно если вы не отображаете скрытые файлы в FTP-клиенте. Скопируйте этот файл со старого хостинга и убедитесь, что на новом хостинге включен модуль mod_rewrite.
У меня Nginx, но я не нашел файл .htaccess. Это нормально?
Да, это абсолютно нормально. Nginx не использует .htaccess. Вся конфигурация находится в файлах в папке /etc/nginx/sites-available/. Вам нужно добавить блок try_files в конфигурацию вашего сайта.
Можно ли вообще отключить красивые ссылки и использовать стандартные?
Да, вы можете выбрать структуру «Простые» в настройках постоянных ссылок. Это полностью избавит от проблем с 404, но такие адреса хуже для SEO и менее удобны для восприятия пользователями.