0

我正在寻找正确处理 Varnish(5.2.1)中的 URL,这就是我所做的(尝试重定向到小写 URL):

set req.url = std.tolower(req.url); //this is new.url
//if original.url != new.url => redirect

这会产生良好的 URL,直到客户端库(并且很少)根据https://www.rfc-editor.org/rfc/rfc3986#section-2.1将 %[hex] 转换为 %[HEX]最终在URL 重定向循环。

例子:

req.url = "/query=mythbusters%20-%20die%20wissensj%c3%A4ger"
is redirected to
"/query=mythbusters%20-%20die%20wissensj%c3%a4ger"
and client redirects it to 
"/query=mythbusters%20-%20die%20wissensj%c3%A4ger"

我正在尝试使用正则表达式来解决这个问题,但由于某种原因,我无法获得大写结果,根据 PCRE/PCRE2/Perl regexp 应该是这样的:

set req.url = std.tolower(req.url);
set req.url = regsuball(req.url, "(%[0-9a-f][0-9a-f])", "\U\1");

有人知道如何解决这个问题吗?

4

1 回答 1

0

我在 Varnish github 上发布了问题,答案是不支持。

于 2021-12-10T08:00:21.307 回答