Как исправить ошибку 404 в постах WordPress?

Ссылка скопирована
1 ответ

Переношу сайт с одного домена на другой. Изменил домен в таблице wp_options, а также прогнал плагином Better Search Replace. Главная открывается, админка открывается, картинки открываются, а посты и страницы выдают 404. Что я делаю не так?

Дополнительно:

не прописан rewrite?

  • Что я делаю не так?

    Всё

    И вот

  • Настройки - постоянные ссылки - обновить
    Настройки - общие - адрес верный ?
  • Как исправить ошибку 404 в постах WordPress?

    Возможно, отсутствует /.htaccess (потерялся при переносе). Восстановить можно через настройки постоянных ссылок.
    Либо сайт обслуживает не Апач.

    • Спасибо, не знал, что с nginx такая проблема
    • felengir, Увы, .htaccess понимает (без бубна) только Апач (и то если AllowOverride), другим серверам для работы ЧПУ нужны другие, их собственные конфигурационные файлы.
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Антон С. Ответ

    Если после переноса домена главная и админка открываются, а записи и страницы дают 404, почти всегда проблема в rewrite rules: не пересохранены постоянные ссылки, неправильный .htaccess для Apache или не настроен try_files для Nginx.

    Первое действие в WordPress: зайдите в “Настройки → Постоянные ссылки” и просто нажмите “Сохранить”. Это пересоберёт rewrite rules. Часто этого достаточно.

    Для Apache в корне должен быть стандартный блок:

    # 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

    # 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

    Если сайт на Nginx, одного .htaccess недостаточно. В конфиге server/location должно быть примерно:

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

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

    Если этого нет, Nginx ищет физический файл по URL записи и получает 404.

    Также проверьте, что в базе заменены оба адреса: home и siteurl. Better Search Replace должен пройти по сериализованным данным, но если меняли только wp_options, часть ссылок и настроек могла остаться старой.

    Если используется кэш/редирект/SEO-плагин, очистите кэш и проверьте редиректы. Иногда после переноса остаются правила старого домена или старой директории.

    Диагностика: временно поставьте структуру постоянных ссылок “Простая”. Если ?p=123 открывает запись, с контентом всё нормально, проблема именно в ЧПУ/rewrite.

    Итог: пересохранить permalinks, проверить .htaccess или Nginx try_files, очистить кэш и убедиться, что домен заменён корректно. Контент при такой ошибке обычно не потерян.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно