Yasin Yaqoobi
Estoy tratando de configurar el proxy inverso con wordpress y excluir un par de rutas. Mis reglas de exclusión funcionan para administradores, incluye, etc., pero no funcionan para /wp-json/. Sospecho que es por el .htaccess. Necesito wordpress para devolver el resto de los datos de la API porque los uso en gatsbyjs.
He pasado todo el día tratando de resolver esto. Por alguna razón, con mi configuración /wp-json/ devuelve 404 y se envía al servidor netlify donde vive la parte frontal de mi sitio. Si elimino todas las reglas de proxy, wp-json funciona.
.htaccess contiene el contenido predeterminado de wordpress.
Aquí hay un pastebin de mi host virtual:
https://pastebin.com/vFh6hCkN
<IfModule mod_ssl.c>
<VirtualHost *:443>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
Protocols h2 http/1.1
ServerName www.michaelharwinlaw.com
ServerAlias michaelharwinlaw.com
ServerAdmin webmaster@cyberserge.com
DocumentRoot /var/www/html/
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLProxyEngine on
ProxyPass /wp-admin/ !
ProxyPass /wp-login/ !
ProxyPass /wp-json/ !
ProxyPass /wp-content/plugins/ !
ProxyPass /wp-includes/ !
ProxyPassMatch .*\.xml !
ProxyPass / https://stag.michaelharwinlaw.com/
ProxyPassReverse / https://stag.michaelharwinlaw.com/
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/mc-error.log
CustomLog ${APACHE_LOG_DIR}/mc-access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
Include /var/www/html/wp-content/uploads/wpseo-redirects/.redirects
SSLCertificateFile /etc/letsencrypt/live/www.michaelharwinlaw.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.michaelharwinlaw.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
.htaccess
<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
ewwink
no funciona porque /wp-json
no es un archivo o directorio real, sin leer el .htaccess
las solicitudes locales obtendrán un 404
not found
respuesta, por lo que Apache continuará reenviando la solicitud al servidor remoto.
Para corregir esta reescritura de URL, debemos enviar las solicitudes al local index.php
.
Reemplazar ProxyPass /wp-json/ !
con
ProxyPass /index.php !
ProxyPass /wp-json !
/wp-json
sin la barra final /
es necesario para manejar la solicitud de ambos domain/wp-json
o domain/wp-json/
.
Cualquier otra URL que no exista será manejada por un servidor remoto.
De la documentaciónver La navegación paginada no funciona sección:
“Esto se debe a una falla en el archivo .htaccess que genera WordPress. Para solucionarlo, elimine el contenido de su archivo .htaccess y vuelva a crearlo.
- En el Panel de control, vaya a Administrar > Archivos (Más información sobre la edición de archivos);
- Haga clic en el enlace a su archivo .htaccess para editar su contenido;
- Copie el contenido del archivo y péguelo en un archivo de texto en un editor de texto. Esta es una precaución en caso de que su archivo .htaccess tenga entradas manuales para redireccionamientos, denegaciones u otros trucos útiles de htaccess;
- Elimine todo el contenido de su archivo .htaccess y haga clic en el botón Actualizar archivo;
- En el Panel de control, vaya a Opciones > Enlaces permanentes;
- Haga clic en el botón Actualizar estructura de enlaces permanentes para generar nuevas reglas de reescritura para sus enlaces permanentes;
- Pruebe los resultados usando un enlace que se había roto previamente;
- Vuelva a agregar cualquier entrada manual de htaccess en su archivo (coloque las entradas manuales de htaccess antes de las líneas # BEGIN WordPress o después de # END WordPress)”.
-
Gracias. Lo he intentado antes. No ayuda.
– Yasin Yaqoobi
8 de diciembre de 2018 a las 13:36
¿Está utilizando un complemento para acceder a la API como ACF?
– Nick Cappello
29 de noviembre de 2018 a las 18:09
Sí, tengo acf y acf para descansar complementos api.
– Yasin Yaqoobi
30 de noviembre de 2018 a las 19:36
Según tengo entendido, ¿quiere permitir /wp-json/ con proxy? corrígeme si me equivoco, y también ¿puedes compartir la URL real que estás intentando?
–Ashfaque Ali Solangi
4 de diciembre de 2018 a las 21:15
/wp-json/ devuelve 404 ¿Cuál es exactamente el URI que probaste?
– B cuadrado ℬℬ
5 de diciembre de 2018 a las 8:22
¿Puedes compartir tus contenidos .htaccess?
– Yehuda Schwartz
5 de diciembre de 2018 a las 16:24