-1

我想将所有 .png 请求重定向到 Varnish VCL 中的 .jpg 请求示例:http ://example.com/images/boy.png (或 .PNG)到http://example.com/images/boy.jpg中清漆 VCL

4

1 回答 1

1

可以有2种情况。

A. 客户端重定向 [1],如果您想告诉客户端的浏览器图像已被移动,请使用它:

sub vcl_recv {
  # ...
  if (req.url ~ "(?i)\.png$") {
    error 750 "http://" + req.host + regsub(req.url, "(?i)\.png$", ".jpg$");
  }
  # ...
}

sub vcl_error {
  # ...
  if (obj.status == 750) {
    set obj.http.Location = obj.response;
    set obj.status = 302;
    return(deliver);
  }
  # ...
}

B. 服务器端重写 [2],如果您想在内部更改请求而不告诉客户端,请使用它:

sub vcl_recv {
  # ...
  if (req.url ~ "(?i)\.png$") {
    set req.url = regsub(req.url, "(?i)\.png$", ".jpg$");
  }
  # ...
}

PD:请不要重复你的问题

[1] https://www.varnish-cache.org/trac/wiki/VCLExampleRedirectInVCL

[2] https://www.varnish-cache.org/trac/wiki/RedirectsAndRewrites

于 2013-07-02T11:22:25.850 回答