Проблемы с устранением ошибки 404 в REST API после перемещения каталога WordPress и обновления структуры постоянных ссылок

Вопрос или проблема

Я запускаю самоуправляемую версию WordPress на VPS Linode с Debian 9.

Ранее я использовал WordPress в директории /blog, потому что у меня был простой HTML-сайт, который я решил не сохранять, поэтому я перенес все из /blog и вернул всё в корневую директорию после удаления содержимого моего старого сайта.

Я следовал шагам, указанным здесь, и обновил настройки постоянных ссылок, а также использовал Velvet Blues для обновления своих URL, а также скрипт поиска и замены для обновления своей SQL базы данных.

Я получил некоторые уведомления от инструмента здоровья сайта, сообщающие, что настройки REST API и Jetpack не работают должным образом. Аналогично, я пытался настроить Yoast SEO для оптимизации моего веб-сайта, но каждый раз возникала ошибка. Согласно их статье, я открыл эту страницу в консоли DOM Chrome и получил это сообщение.

Ошибка

/wp-content/plugins/…min.css?ver=1.0.0:1 Не удалось загрузить ресурс: сервер ответил статусом 404 ()
chrome-extension://c…ihfbcag/inject.js:1 Запускается.
jquery-migrate.min.js:2 JQMIGRATE: Migrate установлен, версия 3.3.2
Ошибка
prwirepro-press_rele…n-ajax-handler.js:1 Не удалось загрузить ресурс: сервер ответил статусом 404 ()
Ошибка
/wp-json/wp/v2/:1 Не удалось загрузить ресурс: сервер ответил статусом 404 ()
wp-api.min.js:2
i
Ошибка
/wp-json/yoast/v1/indexing/prepare:1 Не удалось загрузить ресурс: сервер ответил статусом 404 ()
Ошибка
/wp-json/jetpack/v4/…pnonce=f0758236f2:1 Не удалось загрузить ресурс: сервер ответил статусом 404 ()
chrome-extension://c…ihfbcag/inject.js:1 Запускается.
chrome-extension://c…ihfbcag/inject.js:1 Запускается.
chrome-extension://c…ihfbcag/inject.js:1 Запускается.
2
/wp-json/yoast/v1/indexing/prepare:1 Не удалось загрузить ресурс: сервер ответил статусом 404 ()
Ошибка
prwirepro-press_rele…ibution-admin.css:1 Не удалось загрузить ресурс: сервер ответил статусом 404 ()

Некоторые из упоминаний о press-rele основаны на плагинах, которые я установил и которые использовали директорию /blog.

Обновление 1: Я удалил некоторые из этих плагинов, включая Jetpack и Press Release Distribution, и ошибки стали короче. Осталась только Yoast, что, я предполагаю, связано с изменением структуры постоянных ссылок. Ранее она была

/index.php/%year%/%monthnum%/%day%/%post_id%/

и я изменил её на */%post_name%/ и использовал их инструмент редиректа, чтобы скопировать код в мой файл .htaccess.

Кроме того, когда я захожу на любую страницу моего сайта, например, http://www.sensation-experience.com/blah-blah-blah, я вижу общее сообщение 404 от Apache, а не сообщение “Страница не найдена” в WordPress, и я не понимаю, почему это так.

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

Обновление 2: Я полностью стер мой сайт WordPress, удалил базу данных и создал новую. Я импортировал содержимое WordPress с помощью WXR XML файла. Я смог получить доступ к WP Admin и другим управленческим инструментам, но когда я нажимаю на любую из страниц на главной странице, я получаю сообщение об ошибке Apache 404 вместо страницы 404 “не найдено” в WordPress. Я несколько раз пытался обновить свои постоянные ссылки, но это не дало результатов. Я также проверил файл .htaccess, но всё выглядит хорошо по сравнению с этой статьей.

  • Может кто-нибудь дать мне совет, как это исправить?

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

Добавьте следующую строку в файл * /etc/apache2/sites-available/hostname-le-ssl.conf перед

<Directory /var/www/html/hostname/public_html/>
AllowOverride All

Затем перезапустите apache2.

$ sudo systemctl restart apache2

Файлы в /etc/apache2/sites-available ссылаются на /etc/apache2/sites-enabled.

ls -l /etc/apache2/sites-enabled/hostname-le-ssl.conf

lrwxrwxrwx 1 root root 65 May 26 2019 /etc/apache2/sites-enabled/hostname-le-ssl.conf -> /etc/apache2/sites-available/hostname-le-ssl.conf

Ответ или решение

Проблема 404 при работе с REST API после перемещения каталога WordPress и изменения структуры постоянных ссылок (персистентных URL) — это распространённая ситуация, но ее решение требует внимательности к нескольким ключевым аспектам конфигурации вашей установки WordPress и веб-сервера Apache.

1. Заголовок: Устранение ошибки 404 в WordPress: причины и решения

Ошибка 404, возникающая после перемещения каталога WordPress, может быть вызвана неправильными настройками веб-сервера, оставшимися ссылками на старую структуру каталогов и неверными правилами в файле .htaccess. Давайте разберем основные шаги, которые помогут вам устранить эту проблему.

2. Проверка конфигурации Apache

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

Шаги:

  1. Откройте конфигурационный файл вашего виртуального хоста, который обычно находится в /etc/apache2/sites-available/your-domain.conf.

  2. Добавьте следующие строки перед закрывающим тегом </Directory> для разрешения использования правил .htaccess:

<Directory /var/www/html/your-domain/>
    AllowOverride All
</Directory>
  1. Сохраните изменения и перезапустите Apache:
sudo systemctl restart apache2

3. Проверка файла .htaccess

Ваш файл .htaccess должен быть корректно настроен для работы с новыми постоянными ссылками. В стандартном виде он должен выглядеть следующим образом:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Убедитесь, что этот файл существует в корневом каталоге установки WordPress и что его права доступа позволяют серверу его читать.

4. Обновление постоянных ссылок

После внесения всех изменений, войдите в панель управления WordPress и снова перейдите в "Настройки" > "Постоянные ссылки". Простой повторный клик на кнопку "Сохранить изменения" может помочь обновить структуру ссылок и перегенерировать правила в .htaccess.

5. Проверка на наличие конфликтов плагинов

Проблемы с REST API или ошибками отсутствия ресурсов могут быть вызваны конфликтами с плагинами. Удалите или временно отключите плагины, которые могут вызвать конфликты, особенно те, которые были установлены или настроены для работы со старой структурой URL.

6. Поиск ошибок через консоль

Использование консоли разработчика в браузере (F12) поможет вам отследить, какие именно ресурсы вызывают ошибку 404. Особое внимание обращайте на запросы к /wp-json/. Если они не работают, это также указывает на проблемы с конфигурацией.

7. Проверка логов Apache

Логи Apache могут предоставить ценную информацию о том, какие именно запросы обрабатываются неправильно. Проверьте файл логов, обычно расположенный в /var/log/apache2/error.log, чтобы найти дополнительные подсказки по ошибкам.

Заключение

Следуя этим шагам и обращая внимание на детали, вы сможете устранить проблему 404 в WordPress после перемещения каталога и изменения структуры постоянных ссылок. Запомните, что правильная настройка сервера и файлов конфигурации играют ключевую роль в бесперебойной работе вашего сайта. Не забывайте периодически проверять это после внесения изменений в структуру вашего сайта.

Оцените материал
Добавить комментарий

Капча загружается...