我在这里问这个问题是因为我认为这更像是一个正则表达式问题,而不是一个真正的清漆问题.
我基本上想要做的是定义清漆将缓存的域列表.已经有了答案,但我想使用不同的方法.
现在,此答案中使用的代码如下:
sub vcl_recv {
# dont cache foo.com or bar.com - optional www
if (req.http.host ~ "(www)?\.(foo|bar)\.com") {
pass;
}
# cache foobar.com - optional www
if ( req.http.host ~ "(www)?\.foobar\.com" ) {
lookup;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想要的是有点不同.我有不同TLD的名称,但我只希望缓存域的非www版本.
所以只有mydomain.com,或myotherdomain.nl或yadomain.net
任何其他子域都可以传递给后端.
如果我正确地阅读了你的问题你有一个列表,其中包含同一网站的多个版本,所以www.foobar.com和/或foobar.com都只想匹配foobar.com
如果是这样,您需要返回参考(?<!www).因此,只搜索没有前面的www的域的搜索将是(?<!www\.)((?:[^.\s]+)\.(?:com|net|nl))
希望有所帮助
编辑
(?<!www\.)((?:[^.\s]+)\.(?:\w{2,3})) 如果域名未知