我很好奇如果响应是 404,在 Varnish 2.1.5 中是否有办法重写 URL?
例如。我想提取一个 URL,它可能存在也可能不存在。如果 URL 不存在,我想重写 URL 并尝试使用新的 URL。
我是 Varnish 的新手,并不完全了解请求的生命周期(如果有人知道有文章解释这一点,请分享)。
我已经尝试设置一些变量和请求标头,并进行检查,res.status
但它们似乎在生命周期中的某个地方丢失了,并且无论如何页面 404:
if (req.http.cookie ~ "lang_pref"
&& resp.status == 404
&& req.url ~ "^\/(en|fr|de)(\/.*)?$"
) {
set resp.http.Location = "https://" req.http.host regsub(req.url, "^\/(en|fr|de)\/","/");
}
该用例用于翻译网站。例子
Website.com/french/page 可能存在也可能不存在 如果 /French/page 以 404 响应然后尝试 /page 如果 /page 不存在 那么 404