Wordpress REST API (wp-api) 404 Ошибка
Я использую WP-API плагинов Wordpress REST в течение нескольких месяцев, разрабатывая локально с XAMPP. Недавно я перенес свой сайт в экземпляр EC2, и все работает отлично кроме. Теперь я получаю сообщение 404 со следующим сообщением, когда я пытаюсь получить доступ к любой конечной точке в API:
Запрошенный URL/wordpress/wp-json/не найден на этом сервере
Довольно постоянные ссылки включены со следующей структурой http://.../wordpress/sample-post/
, которая отлично работает при навигации к определенной записи в браузере.
Вот некоторые подробности о моей настройке:
- Wordpress 4.4.1
- WP REST API plug-in 2.0-beta9
- Apache 2.2.22
- Ubuntu 12.04.5
Любая помощь будет очень признательна, поскольку я прошел через SO и форумы поддержки WP в течение нескольких часов, и я не в идеях. Спасибо!
Ответы
Ответ 1
ОБНОВЛЕННЫЙ НОВЫЙ ПУТЬ
Я также столкнулся с аналогичной проблемой в локальном проекте. Я использовал index.php
после моего URL-адреса проекта, и он работал.
http://localhost/myproject/index.php/wp-json/wp/v2/posts
Если он отображает ошибку 404, тогда обновить permalinks вначале (см. раздел "Погоревшая навигация не работает"
Если это работает, возможно, вам нужно включить mod_rewrite
, на ubuntu:
a2enmod rewrite
sudo service apache2 restart
Установка
API REST включен в WordPress 4.7! Плагины больше не нужны, просто установите последнюю версию WordPress, и вы готовы к работе.
Если вы до 4.7:
Использование
Чтобы получить все сообщения:
www.mysite.com/wp-json/wp/v2/posts
Для функции поиска поиск тестового сообщения выглядит следующим образом:
/wp-json/wp/v2/posts?filter[s]=test
Ответ 2
У меня была эта проблема с последним WordPress 4.7+. В моем случае REST API работал только после того, как я изменил настройку постоянных ссылок на нечто иное, чем "Обычное", которое было настройкой по умолчанию для моей установки.
Ответ 3
В WPEngine и WP 4.9.2 мне нужно было только обновить постоянные ссылки, чтобы получить новый, только что установленный сайт, чтобы он возвращал вызовы API v2. Что я сделал:
- Создать сайт
- Перейдите по адресу http://yoursitename.wpengine.com/wp-json/wp/v2/posts.
- Зайдите в админ, настройки, постоянные ссылки, выберите "Название сообщения"
- Нажмите "Сохранить изменения"
- Перейдите по адресу http://yoursitename.wpengine.com/wp-json/wp/v2/posts.
- успех. страница отображает ответ JSON
Ответ 4
Это оказалось проблемой с конфигурацией Apache.
Сначала я удалил файл .htaccess
в корневом каталоге wordpress.
Затем я перешел к /etc/apache2/sites-enabled
и открыл 000-default
Все переменные AllowOverride
были установлены в None, которые я заменил на All
.
Это трюк!
Ответ 5
Мне пришлось вручную создать .htaccess
, установить его на chmod 664
и скопировать в него правила permalink.
Я также играл с
- Настройки > Постоянная ссылка
- Вручную обновить .htaccess через код в нижней части страницы постоянных ссылок после нажатия "Сохранить"
- Добавление "index.php" в качестве одного из других ответов предполагает
- Убедитесь, что
mod rewrite
включен с помощью a2enmod
Ответ 6
Это файл разрешения ошибка, примените следующее решение:
Редактировать этот файл /etc/apache2/apache2.conf
Измените разрешения /var/www/
с "Нет" на "Все"
Перезагрузите сервер apache2
.
Ответ 7
Я решил эту проблему с помощью следующих шагов:
-
Перейдите к.. \Apache24\conf\httpd.conf и найдите LoadModule rewrite_module modules/mod_rewrite.so
.
-
Включите модуль перезаписи, удалив знак #
.
-
Замените все случаи AllowOverride None
на AllowOverride All
.
-
Не забудьте перезапустить сервер Apache. :)
Ответ 8
Я столкнулся с той же проблемой, когда перенес свой сайт из cPanel в инстанс Google Cloud Compute Engine; проблема была в правах доступа к файлам, которые изначально были вызваны различием версий PHP текущего развертывания от предыдущего развертывания.
Вот исправление Как устранить ошибку GCP WordPress " Эта страница не работает example.com в настоящее время не может обработать этот запрос. HTTP ERROR 500
Ответ 9
Я переместил установку WordPress из подкаталога в другой, поэтому в моем случае проблема была связана с конфигурацией WordPress в файлах .htaccess
. Он пытался перенаправить каждую страницу, кроме домашней страницы, в старый каталог. Это было просто вопрос обновления olddir
до newdir
... Это сбило меня с толку не раз, поэтому я решил поставить его здесь...
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /olddir/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /olddir/index.php [L]
</IfModule>
# END WordPress
Ответ 10
Я обнаружил, что mysite/wp-json/
не работал, но mysite/?rest_route=/
был нормальным. Это нарушало некоторые, но не все функции REST API, используемые на моем сайте.
Ответом на это стало недавнее изменение того, как я работал на своем сервере. Это нарушило REST API, но это не было очевидно до позднего времени.
Я изменил этот домен с использования Apache на использование nginx, и я неправильно перенес настройки .htaccess
. Поэтому быстрое решение этой проблемы - вернуться к использованию Apache. Это немедленно восстановило работоспособность сайта.
Я буду менять этот домен обратно на nginx в будущем, но когда я это сделаю, я протестирую его и буду осторожен, чтобы не повлиять на REST API.