You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Varnish将所有子URL重定向至主页面

Varnish实现example.com所有路径重定向至根域名

你的现有代码缺少对请求路径的判断,会导致根路径也被不必要地重定向。以下是两种可行的实现方案:

方案一:直接返回重定向(推荐)

在vcl_recv阶段直接处理,代码简洁直观:

sub vcl_recv {
    # 排除本地IP,避免内部请求/测试被重定向
    if (client.ip != "127.0.0.1" && req.http.host == "example.com" && req.url != "/") {
        return(redirect "https://example.com/" 301);
    }
}
  • 新增req.url != "/"判断,避免根路径本身触发重定向
  • return(redirect ... 301)直接返回标准301永久重定向响应,无需额外处理错误阶段

方案二:基于自定义错误码处理(兼容原有写法)

如果坚持使用自定义错误码的方式,需要在vcl_error阶段补充重定向逻辑:

sub vcl_recv {
    if (client.ip != "127.0.0.1" && req.http.host == "example.com" && req.url != "/") {
        set req.http.x-redir = "https://example.com/";
        error 850 "Moved Permanently";
    }
}

sub vcl_error {
    if (obj.status == 850) {
        set obj.http.Location = req.http.x-redir;
        set obj.status = 301;
        return(deliver);
    }
}
  • 在vcl_error中将自定义错误码850转换为标准301重定向,同时设置Location响应头

内容的提问来源于stack exchange,提问作者Some DevOps Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:24:25