Tengo una instalación de WordPress que funciona perfectamente en un servidor Apache . Actualmente estoy en el proceso de cambiar mi empresa de alojamiento (la nueva oferta NGinx) y mi pila de desarrollo (moviéndose a vvv).
Aquí es cómo se configura la instalación:
Es una instalación de varios sitios de subdominio de Wordpress, con el núcleo en una subcarpeta (/ wp-app /), wp-content en otra subcarpeta (/ wp-app-content /) y, por supuesto, mi index.php, wp-config.php y .htaccess en la carpeta raíz junto con estas 2 carpetas.
Aquí está mi problema :
En la versión de producción (apache), el administrador funciona perfectamente y la carpeta / wp-app / está completamente oculta. En la versión dev (NGinx), el administrador funciona parcialmente, pero muchas páginas devuelven un 404 y, a veces, WP reescriben la url con la aplicación wp.
Lo que creo que es la fuente del problema :
Estoy casi seguro de que mis reescrituras NGinx no son buenas. He encontrado varios comentarios que mencionan el problema, pero no respondieron o la respuesta fue parcial y no funcionó para mí.
Mi archivo .htaccess que funciona :
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) wp-app/$1 [L]
RewriteRule ^(.*\.php)$ wp-app/$1 [L]
RewriteRule . index.php [L]
# END WordPress
Mi nginx.conf que funciona parcialmente :
server {
listen 80;
listen 443 ssl;
server_name guillaumemolter.dv *.guillaumemolter.dv
root /srv/www/guillaumemolter/htdocs;
index index.php;
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ last;
rewrite ^/(wp-.*.php)$ /wp-app/$1 last;
rewrite ^/(wp-(content|admin|includes).*) /wp-app/$1 last;
}
location / {
#try_files $uri $uri/ /wp-app/index.php?$args ;
try_files $uri $uri/ /index.php?$args ;
}
location ~ \.php$ {
#try_files /wp-app/$uri =404;
try_files $uri =404;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off; log_not_found off; expires max;
}
location = /robots.txt { access_log off; log_not_found off; }
location ~ /\. { deny all; access_log off; log_not_found off; }
}
Las 2 líneas comentadas son pruebas que hice de la desesperación ...
Recursos que he leído y utilizado hasta ahora:
enlace enlace Y otros, incluyendo 2 fuentes de este sitio, que no puedo publicar aquí porque no tengo suficiente reputación.
Muchas gracias por tu ayuda.