Eliminando los pares de atributos / valores seleccionados de la cadena de consulta para que el barniz no varíe el caché

Mi objetivo es "agregar a la lista blanca" ciertos atributos de la cadena de consulta y sus valores para que el barniz no varíe la caché entre las URL.

Ejemplo:

Url 1: http://foo.com/someproduct.html?utm_code=google&type=hello  
Url 2: http://foo.com/someproduct.html?utm_code=yahoo&type=hello  
Url 3: http://foo.com/someproduct.html?utm_code=yahoo&type=goodbye

En el ejemplo anterior, quiero agregar a la lista blanca "utm_code" pero no a "tipo". Entonces, después de que se golpee la primera URL, quiero que Barniz sirva ese contenido almacenado en caché en la segunda URL.

Sin embargo, en el caso de la tercera url, el atributo "tipo" valor es diferente, por lo que debería ser una falta de caché de barniz.

He intentado los 2 métodos a continuación (que se encuentran en un artículo de ayuda de drupal que no puedo encontrar en este momento) que no parecen funcionar. Podría ser porque tengo el regex mal.

# 1. strip out certain querystring values so varnish does not vary cache.
set req.url = regsuball(req.url, "([\?|&])utm_(campaign|content|medium|source|term)=[^&\s]*&?", "\1");
# get rid of trailing & or ?
set req.url = regsuball(req.url, "[\?|&]+$", "");

# 2. strip out certain querystring values so varnish does not vary cache.
set req.url = regsuball(req.url, "([\?|&])utm_campaign=[^&\s]*&?", "\1");
set req.url = regsuball(req.url, "([\?|&])foo_bar=[^&\s]*&?", "\1");
set req.url = regsuball(req.url, "([\?|&])bar_baz=[^&\s]*&?", "\1");
# get rid of trailing & or ?
set req.url = regsuball(req.url, "[\?|&]+$", "");

Respuestas a la pregunta(7)

Su respuesta a la pregunta