Varnish/Fastly:特定国家全站重定向需排除store-locator页面
特定国家流量重定向排除store-locator页面失败问题解决
问题背景
- 需求:将特定国家(由
georedirect表定义)的所有流量重定向至/fall-2023-collection,但允许/store-locator页面正常加载,不参与重定向 - 当前异常:所有页面(包括
/store-locator)均被重定向到/fall-2023-collection,多次调整条件组合无效
现有代码
recv事件代码
if (req.http.host ~ "site\.url" && req.url != "/fall-2023-collection" && req.url != "/store-locator" && req.url !~ "\.(jpe?g|gif|png|webp|css|js|json|svg|woff|woff2|html|)$" && table.lookup(georedirect, client.geo.country_code)) { error 618 "redirect"; } elseif (req.http.host ~ "site\.url" && req.url == "/store-locator" && table.lookup(georedirect, client.geo.country_code)) { error 617 "redirect_loc"; } else { return (pass); }
error事件代码
if (obj.status == 618 && obj.response == "redirect") { set obj.status = 308; set obj.http.Location = "https://" + req.http.host + "/fall-2023-collection"; return (deliver); } if (obj.status == 617 && obj.response == "redirect_loc") { set obj.status = 308; set obj.http.Location = "https://" + req.http.host + "/store-locator"; return (deliver); }
问题原因
核心问题在于条件判断逻辑错误:
- 当请求
/store-locator时,虽然第一个if条件因req.url != "/store-locator"不触发,但后续的elseif会触发617错误,导致请求被重定向回/store-locator,而非直接放行 - 这种冗余的重定向逻辑会让浏览器陷入循环或误判,最终表现为页面被强制跳转到目标集合页
修复方案
优化后的recv事件代码
// 优先处理store-locator请求,直接放行 if (req.http.host ~ "site\.url" && req.url == "/store-locator" && table.lookup(georedirect, client.geo.country_code)) { return (pass); } // 其他符合条件的流量重定向到fall-2023-collection elseif (req.http.host ~ "site\.url" && req.url != "/fall-2023-collection" && req.url !~ "\.(jpe?g|gif|png|webp|css|js|json|svg|woff|woff2|html)$" && table.lookup(georedirect, client.geo.country_code)) { error 618 "redirect"; } else { return (pass); }
简化后的error事件代码
if (obj.status == 618 && obj.response == "redirect") { set obj.status = 308; set obj.http.Location = "https://" + req.http.host + "/fall-2023-collection"; return (deliver); }
修复要点
- 调整判断顺序:优先匹配
/store-locator请求,直接返回pass,彻底跳过后续重定向逻辑 - 移除无效分支:删除原有的617错误重定向逻辑,避免不必要的跳转
- 简化正则:去掉原正则末尾多余的
|,避免匹配空后缀的异常情况
内容的提问来源于stack exchange,提问作者Marisa
相关产品推荐
相关产品推荐

