使用varnish映射URL时传递查询字符串
对于我正在开发的web服务,我们使用varnish将“用户友好”URL映射到页面实际所在的较长URL。例如: 真实网址: 用户友好的URL: 因此,我们在vcl中实现这一点的方法如下:使用varnish映射URL时传递查询字符串,varnish,varnish-vcl,Varnish,Varnish Vcl,对于我正在开发的web服务,我们使用varnish将“用户友好”URL映射到页面实际所在的较长URL。例如: 真实网址: 用户友好的URL: 因此,我们在vcl中实现这一点的方法如下: if (req.url ~ "page") { set req.url = stuff/things/page.php } 但是现在我遇到了一个问题,查询字符串在这个过程中被删除了。因此,某些内容的效果只是映射到,但我需要查询字符串传递到映射的URL。有人知道我如何通过清漆来达到这个目的吗?我想我需要通
if (req.url ~ "page") {
set req.url = stuff/things/page.php
}
但是现在我遇到了一个问题,查询字符串在这个过程中被删除了。因此,某些内容的效果只是映射到,但我需要查询字符串传递到映射的URL。有人知道我如何通过清漆来达到这个目的吗?我想我需要通过正则表达式操作提取查询字符串并将其附加到映射的URL,但我对vcl不太熟悉,不确定这是否可行,或者是否有更好的方法来实现它。我没有对其进行测试,但这可以完成以下工作:
if (req.url ~ "page") {
set req.url = "/stuff/things/page.php" + regsub(req.url, "[^?]*", "");
}
我没有测试它,但这可能会起作用:
if (req.url ~ "page") {
set req.url = "/stuff/things/page.php" + regsub(req.url, "[^?]*", "");
}
这就是我所做的,就像一个魅力,我知道这是2年后的反应,但可能会帮助别人
if (req.url ~ "page") {
set req.url = regsub(req.url, "page", "stuff/things/page.php\1");
}
这就是我所做的,就像一个魅力,我知道这是2年后的反应,但可能会帮助别人
if (req.url ~ "page") {
set req.url = regsub(req.url, "page", "stuff/things/page.php\1");
}
谢谢你的建议!我仍在测试这个(我遇到了一些其他问题),但一旦我验证了它的有效性,我一定会接受你的答案:)谢谢你的建议!我仍在测试这个(我遇到了一些其他问题),但一旦我验证了它的有效性,我一定会接受你的答案:)