2010-08-23 25 views
2

J'ai un cas d'utilisation relativement simple (je pense) mais je ne trouve aucun exemple où quelqu'un a fait cela. Nous utilisons Varnish comme antémémoire et proxy inverse face à deux applications différentes et nous aimerions rendre les choses un peu plus unifiées entre les deux, car ils font tous les deux des choses similaires. J'espérais que Varnish pourrait aider à réécrire les URL comme indiqué ci-dessous.Puis-je reformater mes paramètres d'URL avec Varnish

URL de l'application originale pour la pagination (obtenir 10 premiers articles):

http://myapplication.com/products/?startindex=1&endindex=10 

URL désiré:

http://myapplication.com/products/?paginate=1:10 

Ceci est juste un exemple (parce que le plus complexe, il combine deux paramètres), mais dans tous les cas, les valeurs d'entrée pour les paramètres restent les mêmes, c'est juste que les noms des paramètres changent.

Un autre exemple serait:

http://myapplication.com/search/?query=something 

à:

http://myapplication.com/search/?q=something 

Quelqu'un at-il une expérience avec vernis et comment cela pourrait se faire?

Merci

Répondre

5

Apparemment vous pouvez. La réponse est que regsub est votre ami.

Par exemple: paramètre

if (req.url ~ "(.*)(id=)") { 
     set req.url = regsub(req.url, "(feeds/[a-zA-Z]*/)(.*)([\?|&])(id=)([a-zA-Z0-9]*)(.*)", "\1\2\3byGuid=\5\6"); 
} 

Cela convertira et "id" entrant dans un paramètre "byGuid" sur le back-end. t fait aussi beaucoup de choses avec le reste de la chaîne d'URL mais les bases sont là. Donc, si quelqu'un veut faire quelque chose de similaire, c'est un bon point de départ.