Un usuario preguntó 👇
Hola, probé los métodos 1 y 2 de las Preguntas frecuentes sobre el servidor Nginx pero no puedo decirle a webp que funcione, cuando cambio la imagen de prueba después de la configuración, encontré 404 no encontrado. Es una instalación clásica de wp en el servidor nginx de ubuntu 18.04 en digitalocean. Mi archivo / etc / nginx / sites-available se ve así:
`servidor {root /var/www/mysite.be; index.php index.html index.htm index.nginx-debian.html; nombre_servidor mysite.be http://www.mysite.be;
ubicación / {# try_files $ uri $ uri / = 404; try_files $ uri $ uri //index.php$is_args$args; }
ubicación ~ .php $ {incluir fragmentos / fastcgi-php.conf; fastcgi_pass unix: /var/run/php/php7.2-fpm.sock; }
location ~ / . {descargo de responsabilidad completo; }
location = /favicon.ico {log_not_found off; access_log como; }
ubicación ~ * ^ / wp-content /.* . (png | jpe? g) $ {add_header Vary Glac; expiró 365d; } ubicación ~ * ^ / wp-content /.* . webp $ {expiró 365d; if ($ whattodo = AB) {expira 365d; if ($ whattodo = AB) {add_header Variar Aceptar; }} if ($ http_accept ~ * «webp») {establecer $ whattodo A; } if (-f $ request_filename.webp) {set $ whattodo “$ {whattodo} B”; } if ($ whattodo = AB) {reescribir ^ (. *) $ 1.webp último; } if ($ whattodo = A) {reescribir ^ / wp-content /.* . (jpe? g | png) $ / wp-content / plugins / webp-express / w $} ubicación = /robots.txt {log_not_found as; access_log como; dar permiso a todos; } ubicación ~ * . (css | gif | ico | jpeg | jpg | js | png) $ {expira como máximo; log_not_found as; }
escuchar 443 ssl; # administrado por Certbot ssl_certificate /etc/letsencrypt/live/mysite.be/fullchain.pem; # administrado $ ssl_certificate_key /etc/letsencrypt/live/mysite.be/privkey.pem; # manager $ include /etc/letsencrypt/options-ssl-nginx.conf; # administrado por Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionado por Certbot
}
servidor {if ($ host = http://www.mysite.be) {return 301 https: // $ host $ request_uri; } # administrado por Certbot
if ($ host = mysite.be) {recuperar 301 https: // $ host $ request_uri; } # administrado por Certbot
if ($ http_accept ~ * “webp”) {reescribir ^ / (. *). (jpe? g | png) $ / wp-content / plugins / webp-express / wod / webp-on-de $}
escucha 80; nombre_servidor mysite.be http://www.mysite.be; return 404; # gestionado por Certbot
} ‘
¿Qué hacer para que funcione?
(@roselldk)
Hace 1 año, 3 meses
Tenga en cuenta que debe tener en cuenta que la configuración de WebP Express para el destino debe coincidir con las reglas. Hay muchas cosas de las que hay que tener cuidado. Escribí una lista completa en las Preguntas frecuentes.
(@bakkerhenk)
Hace 1 año, 3 meses
Encontré que todo funcionaba usando la siguiente configuración
# WebP Express rules
# --------------------
location ~* ^/?wp-content/.*.(png|jpe?g)$ {
add_header Vary Accept;
expires 365d;
if ($http_accept !~* "webp"){
break;
}
try_files
/wp-content/webp-express/webp-images/doc-root/$uri.webp
$uri.webp
/wp-content/plugins/webp-express/wod/webp-on-demand.php?xsource=x$request_filename&wp-content=wp-content
;
}
# Route requests for non-existing webps to the converter
location ~* ^/?wp-content/.*.(png|jpe?g).webp$ {
#set $test "${test}A:${uri}---";
set $test "${test}A";
try_files
$uri
/wp-content/plugins/webp-express/wod/webp-realizer.php?wp-content=wp-content
;
}
# ------------------- (WebP Express rules ends here)
if (!-e $request_filename) {
set $test P;
}
# If the uri points to webp-on-demand.php or a webp file, append D to the test variable
if ($uri !~ ^/(.*)(webp-on-demand.php|.webp)$) {
set $test "${test}D";
}
if ($test = PD) {
rewrite ^/(.*)$ /index.php?$1;
}
(@roselldk)
Hace 1 año, 3 meses
Déjame ver si entiendo esto. Asegúrese de comprender correctamente lo siguiente.
El problema fue en realidad el siguiente código para enlaces permanentes:
# WORDPRESS PERMALINKS
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}
que redirigió archivos inexistentes (y directorios y enlaces suaves) a index.php.
Y cambió ese código para que no suceda cuando ese archivo faltante sea webp o webp-on-Claim.php.
$ Test se establece en P si el archivo no existe. Con «D» adjunta a menos que webp o webp-on-Claim.php sea el archivo que falta. Entonces, remisión solo si ambas condiciones son fijas (PD).
(@roselldk)
Hace 1 año, 3 meses
Pero, ¿necesita el bloque “#WORDPRESS PERMALINKS”? Ya tienes tus try_files en el bloque de tu sitio:
location / {
# try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
Debe tener cuidado de redirigir las semillas personalizadas a WordPress. Y debido a que utiliza un «juego de prefijos», no anula el juego de expresiones regulares.
Pero bueno, mencionas que ya lo has probado y por alguna razón no funciona. Me pregunto si este truco de reescritura es ampliamente utilizado. En ese caso, debería indicar su solución en las Preguntas frecuentes.
Por cierto, esta solución obviamente no ayuda a @ tanuki1986. Pero gracias por publicarlo independientemente de 🙂
(@roselldk)
Hace 1 año, 3 meses
Puedo ver que el truco de reescritura de enlaces permanentes está fuera aquí y allí Bueno
Esta respuesta fue modificada hace 1 año, 3 meses.
(@roselldk)
Hace 1 año, 3 meses
Resumen de hockey para que pueda vincularlo desde las preguntas frecuentes.
Problema:
El siguiente hockey se ha utilizado en algunas configuraciones para que los enlaces permanentes funcionen. Sin embargo, el hockey viola las reglas estándar de Nginx utilizadas para WebP Express.
if (!-e $request_filename) {
rewrite ^/(.+)$ /index.php last;
}
Solución:
Si tiene ese hockey en su configuración, debe reemplazarlo con:
# WORDPRESS PERMALINKS HACK, HACKED TO WORK WITH WEBP EXPRESS
if (!-e $request_filename) {
set $redirectToIndex YES;
}
# If the uri points to webp-on-demand.php or a webp file, cancel that redirect
if ($uri ~ ^/(.*)(webp-on-demand.php|.webp)$) {
set $redirectToIndex NO;
}
if ($redirectToIndex = YES) {
rewrite ^/(.*)$ /index.php last;
}
La solución con bakkerhenk se formuló aquí (en este hilo). Lo modifiqué un poco para hacerlo un poco más legible.
Esta respuesta fue modificada hace 1 año, 3 meses. Esta respuesta fue modificada hace 1 año, 3 meses. Esta respuesta fue modificada hace 1 año, 3 meses. Esta respuesta fue modificada hace 1 año, 3 meses. Esta respuesta fue modificada hace 1 año, 3 meses. Esta respuesta fue modificada hace 1 año, 3 meses. Esta respuesta fue modificada hace 1 año, 3 meses.
(@roselldk)
Hace 1 año, 3 meses
@bakkerhenk: ¿Cómo estás usando
rewrite ^/(.*)$ /index.php?$1;
más bien
rewrite ^/(.*)$ /index.php?q=$1 last;
?
(@roselldk)
Hace 1 año, 3 meses
De acuerdo a este enlace, wordpress no requiere el cable de consulta, pero se puede leer desde REQUEST_URI. Entonces creo que lo siguiente lo hará:
rewrite ^/(.+)$ /index.php last;
Pienso que el «últimoEs bueno evitar que la otra bandera de reescritura viole nuestra reescritura.
Esta respuesta fue modificada hace 1 año, 3 meses.
(@bakkerhenk)
Hace 1 año, 3 meses
Tu conclusión es correcta. No tengo ni idea de por qué el siguiente código no funciona. Verifiqué casi todas las configuraciones de NGINX que encontré en el servidor. (Plesk Onyx 17.8.11)
location / {
# try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
El truco de referencia que ofrece Plesk en sus páginas de soporte es una solución:
Después de convertir el sitio web de WordPress a FPM alojado por nginx en Plesk, no se carga con «404 Not Found» en todas las páginas excepto en la página principal
No estoy seguro de por qué omití la bandera «última», pero hubiera sido mejor usarla.
(@roselldk)
Hace 1 año, 3 meses
Gracias por el café, @bakkerhenk 🙂
¿Solucionó tu problema??
0 / 0