Solucionar los problemas entre Varnish y la opción para combinar archivos CSS/JS ((URL con ?f=)

⛔️ Obsoleto: Este documento trata un potencial error con WP Rocket versión 2.10.x o inferior.
Ya no se aplica a WP Rocket 2.11 o versiones superiores.

En algunos raros casos la opción de WP Rocket para combinar los archivos CSS/JS puede entrar en conflicto en los sitios web que usan Varnish. Una solución posible es la de modificar el archivo de configuración Varnish, si tienes acceso a ello.

El ejemplo siguiente se refiere a Bitnami; sin embargo, si tienes conocimientos técnicos avanzados, es posible que sepas como aplicar esta solución a otros contextos.

La redirección rompe la concatenación

Cuando el script de concatenación intenta colectar los archivos para combinarlos, lo hace creando un URL como este:

https://example.com/wp-content/plugins/wp-rocket/min/?f=path/file.css,path/other/file.css

Nota que el URL contiene el parámetro ?f=, seguido por los caminos relativos a los archivos, separándolos con una coma.
Este tipo de URL contiene todo el contenido del archivo concatenado y ahora WP Rocket está listo para salvar el contenido como archivo estático dentro de la carpeta wp-content/cache/min/.

Sin embargo, según la configuración Varnish, el URL con ?f= podría redirigir a la página principal y romper el proceso de concatenación.

Corrección: modificar la configuración Varnish

Si tienes acceso al archivo de configuración Varnish, puedes modificarlo excluyendo los URIs que contienen ?f=. Esto debería solucionar el problema.

En nuestro ejemplo con Bitnami, deberías modificar las siguientes líneas de código en wordpress.vcl.

Cambiar esta porción de código:

if (req.url ~ "\.(gif|jpg|jpeg|swf|flv|mp3|mp4|pdf|ico|png|css|js)(\?.*|)$") {
	unset req.http.cookie;
	set req.url = regsub(req.url, "\?.*$", "");
}

de esta manera:

if (req.url ~ "\.(gif|jpg|jpeg|swf|flv|mp3|mp4|pdf|ico|png|css|js)(\?.*|)$") {
	if(!(req.url ~ "\?f=")) {
		unset req.http.cookie;
		set req.url = regsub(req.url, "\?.*$", "");
	}
}

Nota: si no estás usando Bitnami, ponte en contacto con el soporte de tu proveedor de alojamiento web para que te ayuden a adaptar esta solución a su ambiente.