在Varnish Cache wiki中,它说明了如何regsub
分别避免向www.example.com和example.com缓存请求的示例。 https://www.varnish-cache.org/trac/wiki/RedirectsAndRewrites的示例是:
set req.http.host = regsub(req.http.host, "^www\.example\.com$","example.com");
“对www.example.com和example.com的请求都将作为”example.com“进入后端,并最终被该字符串缓存。”这意味着不会发生重复缓存。
我有多个站点使用相同的清漆服务器(VCL),所以我希望用一个可以处理多个URL的语句替换“example.com”。例如:
www.example1.co.uk > example1.co.uk
www.example2.com > example2.com
这个适当的正则表达式(如果这是正确的术语)是什么?
使用此VCL有多个单独的域(不同域上具有不同内容的不同站点)我希望避免在添加/删除新站点时更改vcl。因此,通用解决方案就是我所追求的,可以应用于任何域以消除复制的可能性,无论是否存在由Varnish存储/服务的WWW别名。 (说不清楚这个,希望它更清楚!)
我知道重定向可以在varnish之外,在Apache等中完成,但不是将其作为解决方案。
答案 0 :(得分:1)
set req.http.host = regsub(req.http.host,
"^www\.(.*)$",
"\1");
这将剥离任何域名的www。 (我确实不愿意给你这个答案,因为这违背了我的religion)
搜索引擎可能会因为在多个网址上提供相同内容而受到惩罚,但搜索引擎优化是另一个主题。
答案 1 :(得分:1)
而不是克里斯建议的,你可以删除www部分:
set req.http.host = regsub(req.http.host, "^www\.", "");
也应该快一点点