Varnish/Fastly - 将所有站点 URL 地理重定向到一页(商店定位器除外)

问题描述 投票:0回答:1

我正在尝试将来自某些国家/地区的所有流量重定向到一个集中页面(2023 年秋季系列),但另一个页面(商店定位器)除外。我的重定向工作是指所有页面都重定向到

fall-2023-collection
,包括
store-locator
。我已经尝试了 if/elseif/else 的多种条件组合,但我没有运气让
store-locator
按预期加载。

这就是我为

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);
}

georedirect
只是一个包含两个字母国家代码的表格,因此它并不真正相关。该部分按预期工作。我使用 VPN 进行了验证,所以这不是我遇到的主要问题。

magento2 varnish varnish-vcl fastly
1个回答
0
投票

Fastly Fiddle 是帮助您调试此类问题的绝佳工具:
https://fiddle.fastly.dev/

我用它来生成一个工作示例:
https://fiddle.fastly.dev/fiddle/be5f942f

在链接的小提琴中,我发出五个请求:

  1. /anything/the-intended-destination?beep=boop
  2. /anything/dont-redirect-this-either?=fizz=buzz
  3. /anything/foo
  4. /anything/bar
  5. /anything/baz

第一个请求应该刚刚到达目的地。

第二个请求应该刚刚到达目的地。

第三个、第四个和第五个请求应重定向到

/anything/the-intended-destination

我没有实现表查找,正如您提到的这对您有用,因此我所做的主要更改是从

req.url
切换到
req.url.path
,因为后者不包含查询字符串参数。

传入请求中的任何查询字符串参数都会导致您的检查(使用

req.url
)失败。

如果您以后对 Fastly 有任何疑问或问题,请随时联系以下任何人员...

注意: 就官方 Fastly 支持而言,上面的列表按重要性降序排列(即,在发布到 Stack Overflow 时,您会得到最少的关注/反馈)。因此,我建议在官方社区论坛中提问,或者更好的是,发送电子邮件至 Fastly 支持。

© www.soinside.com 2019 - 2024. All rights reserved.