Pregunta sobre WebP Express de Wordpress:

servidor nginx 404 no encontrado al convertir im谩genes de prueba

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 ~ * 鈥渨ebp鈥) {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

Deja una respuesta 0

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *