permanent - Error de Wordpress REST API(wp-api) 404
wordpress wp json 404 (7)
He estado usando el plugin de Wordpress REST WP-API durante meses ahora mientras desarrollo localmente con XAMPP. Recientemente migré mi sitio a una instancia de EC2 y todo funciona bien, excepto que ahora obtengo un 404 con el siguiente mensaje cuando intento acceder a cualquier punto final en la API:
La URL solicitada / wordpress / wp-json / no se encontró en este servidor
Los enlaces permanentes bonitos están habilitados con la siguiente estructura http://.../wordpress/sample-post/
que funciona bien cuando se navega a una publicación específica en el navegador.
Aquí hay algunos detalles sobre mi configuración:
- Wordpress 4.4.1
- No es un multisitio
- WP REST API plugin 2.0-beta9
- Apache 2.2.22
- Ubuntu 12.04.5
Cualquier ayuda sería muy apreciada ya que he pasado por SO y los foros de soporte de WP durante varias horas y no tengo ideas. ¡Gracias!
En WPEngine y WP 4.9.2 solo tuve que actualizar los enlaces permanentes para obtener un sitio nuevo y recién instalado para devolver las llamadas a la API v2. Lo que hice:
- Crear sitio
- Vaya a http://yoursitename.wpengine.com/wp-json/wp/v2/posts
- obtener 404
- Vaya a admin, settings, permalinks, elija "Post Name"
- Haga clic en "Guardar cambios"
- Vaya a http://yoursitename.wpengine.com/wp-json/wp/v2/posts
- éxito. página muestra la respuesta JSON
Había movido la instalación de WordPress de un subdirectorio a otro, por lo que en mi caso el problema se debía a la configuración de WordPress en los archivos .htaccess
. Estaba intentando redirigir todas las páginas excepto la página de inicio al directorio anterior. Era solo una cuestión de actualizar olddir
a newdir
... Esto me hizo tropezar más de una vez, así que pensé en ponerlo aquí ...
# 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
Resolví este problema a través de los siguientes pasos:
Vaya a .. / Apache24 / conf / httpd.conf y busque los
LoadModule rewrite_module modules/mod_rewrite.so
.Habilite el módulo de reescritura eliminando la marca
#
.Reemplace todos los casos de
AllowOverride None
porAllowOverride All
.No te olvides de reiniciar el servidor apache. :)
Resultó ser un problema con la configuración de Apache.
Primero, .htaccess
archivo .htaccess
en el directorio raíz de wordpress.
A continuación, navegué a /etc/apache2/sites-enabled
y abrí 000-default
Todas las variables AllowOverride
se establecieron en Ninguna, que reemplazé con All
.
Eso hizo el truco!
Tuve este problema con la última versión de WordPress 4.7+. En mi caso, la API REST solo funcionó después de que cambié la configuración de los enlaces permanentes a algo distinto de "Normal", que era la configuración predeterminada para mi instalación.
ACTUALIZADO NUEVO CAMINO
También me enfrenté a un problema similar en un proyecto local. Utilicé index.php
después de la url de mi proyecto y funcionó.
http://localhost/myproject/index.php/wp-json/wp/v2/posts
Si muestra un error 404, actualice primero los enlaces permanentes (consulte la sección "La navegación con paginación no funciona"
Si funciona, quizás necesite habilitar mod_rewrite
, en ubuntu:
a2enmod rewrite
sudo service apache2 restart
Instalación
La API REST está incluida en WordPress 4.7! Los complementos ya no son necesarios, solo instale la última versión de WordPress y estará listo para comenzar.
Si estás antes de 4.7:
Descargue el complemento desde aquí: http://v2.wp-api.org/
Instálalo y actívalo.
Uso
Para obtener todos los mensajes:
www.mysite.com/wp-json/wp/v2/posts
Para la funcionalidad de búsqueda, la búsqueda de la publicación de prueba se ve así:
/wp-json/wp/v2/posts?filter[s]=test
Tuve que hacer manualmente un .htaccess
, configurarlo en chmod 664
y copiar las reglas de enlace permanente en él.
También jugué un poco con
- Configuraciones> Permalinks
- Actualizar manualmente .htaccess a través del código en la parte inferior de la página de enlaces permanentes después de hacer clic en "Guardar"
- Agregar "index.php" como sugiere una de las otras respuestas
- Asegurarse de que la
mod rewrite
fue habilitada a través dea2enmod