url - 我可以使用 Varnish 重新格式化我的 URL 参数吗

标签 url parameters url-rewriting varnish

我有一个相对简单的(我认为)用例,但我找不到任何有人这样做的例子。我们在两个不同的应用程序之前使用 Varnish 作为缓存和反向代理,并希望使两者之间的事情更加统一,因为它们都做类似的事情。我希望 Varnish 可以帮助重写 URL,如下所示。

用于分页的原始应用程序 URL(获取前 10 项):

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

所需网址:

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

这只是一个示例(最复杂的示例,因为它结合了两个参数),但在所有情况下,参数的输入值都保持不变,只是参数名称会发生​​变化。

另一个例子是:

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

至:

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

有人对 Varnish 有任何经验吗?如何做到这一点?

谢谢

最佳答案

显然你可以。答案是 regsub 是你的 friend 。

例如:

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

这会将传入的“id”参数转换为后端的“byGuid”参数。 t 还对 URL 字符串的其余部分做了很多事情,但基础知识就在那里。因此,如果有人想做类似的事情,这是一个很好的起点。

关于url - 我可以使用 Varnish 重新格式化我的 URL 参数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3547384/

相关文章:

java - 从远程地址复制文件似乎丢失了信息

html - Zend_View_Helper_Navigation_Menu 创建了一个我没想到的 url

Powershell:我可以将现有枚举用作我自己函数的参数吗?

java - Spring 从 root 上设置的 urlrewrite 规则中排除页面

objective-c - 改进在文本正文中查找 URL 的算法 - obj-c

java - 在 Java Servlet 中处理 URL

ruby-on-rails - 如何让 Rails 参数接受字符串数组?

sql-server - 将参数传递给 SQL 代理作业

php - opencart 中的 URL 重写

oracle - Weblogic 11g URL 重写