如何自动将 www.example.com 类型的任何链接重定向到 example.com。
我想对所有访问 varnish 实例的链接执行此操作(因此我不必单独定义访问服务器的所有域的值)。
我尝试使用以下方法:
if(req.http.host ~ "^www\.(.+)$"){
set req.http.host = regsub(req.http.host, "^www\.", "");
}
Run Code Online (Sandbox Code Playgroud)
它有效,但问题在于它击中了正确的后端,但它没有重定向。我从这里了解到:https : //www.varnish-cache.org/vmod/redirect您可以重定向到一个 url,但我不确定如何从 varnish 获取“完整”url 以去除 www 并重定向。
任何帮助,将不胜感激!
非常感谢!
杰森
Varnish 没有用于从vcl_recv(). 相反,您必须抛出一个错误vcl_recv()才能被捕获vcl_error()。这是因为vcl_recv()无权访问响应对象。您可以阅读有关这是如何完成的。以下是我根据您的情况尝试回答的尝试。
在vcl_recv():
if (req.http.host ~ "^www\.") {
error 750 regsub(req.http.host, "^www\.(.*)", "http://\1"); //Capture everything after the www. and place it after a http://
}
Run Code Online (Sandbox Code Playgroud)
在vcl_error():
if (obj.status == 750) {
set obj.http.Location = obj.response;
set obj.status = 302;
return(deliver);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3908 次 |
| 最近记录: |