- Вопрос или проблема
- Ответ или решение
- 1. Заголовок: Устранение ошибки 404 в WordPress: причины и решения
- 2. Проверка конфигурации Apache
- Шаги:
- 3. Проверка файла .htaccess
- 4. Обновление постоянных ссылок
- 5. Проверка на наличие конфликтов плагинов
- 6. Поиск ошибок через консоль
- 7. Проверка логов Apache
- Заключение
Вопрос или проблема
Я запускаю самоуправляемую версию 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
.
Шаги:
-
Откройте конфигурационный файл вашего виртуального хоста, который обычно находится в
/etc/apache2/sites-available/your-domain.conf
. -
Добавьте следующие строки перед закрывающим тегом
</Directory>
для разрешения использования правил.htaccess
:
<Directory /var/www/html/your-domain/>
AllowOverride All
</Directory>
- Сохраните изменения и перезапустите 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 после перемещения каталога и изменения структуры постоянных ссылок. Запомните, что правильная настройка сервера и файлов конфигурации играют ключевую роль в бесперебойной работе вашего сайта. Не забывайте периодически проверять это после внесения изменений в структуру вашего сайта.