我正在寻找正确处理 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");
有人知道如何解决这个问题吗?