我目前Varnish已设置为常规缓存等,但也可用作我们网站移动版的重定向。
效果很好(正如Varnish所做的那样!)并按预期重定向。我决定在VCL配置中添加功能,不仅可以将移动设备重定向到移动版本的网站,还可以将访问移动网站链接的桌面(例如,在Google上)重定向到桌面的桌面版本。< / p>
然而,我似乎无法以最令人费解的方式使用它。这是VCL:
#忽略某些共享资产 if(req.url!〜“。(jpg | png | gif | gz | tgz | bz2 | tbz | mp3 | ogg | css)$”){
# Let's detect if we're a Mobile
if (req.http.User-Agent ~ "iP(hone|od)" || req.http.User-Agent ~ "Android" || req.http.User-Agent ~ "Symbian" || req.http.User-Agent ~ "^BlackBerry" || req.http.User-Agent ~ "^SonyEricsson" || req.http.User-Agent ~ "^Nokia" || req.http.User-Agent ~ "^SAMSUNG" || req.http.User-Agent ~ "^LG" || req.http.User-Agent ~ "webOS" || req.http.User-Agent ~ "^PalmSource") {
# If we're a mobile, set the X-Device header.
set req.http.X-Device = "mobile";
# If we've not set a preference to the fullsite to override the redirect, and we're not accessing the mobile site, redirect. This all works fine.
if ((req.http.Cookie !~ "fullsite")&&(req.url !~ "mobile")){
error 750 "Moved Temporarily";
}
}
else{
# We're not mobile. I can see this header is set in the logs.
set req.http.X-Device = "desktop";
# If we're a desktop AND accessing the mobile site....
if (req.url ~ "mobile"){
# -------------------- THIS NEVER HAPPENS
error 750 "Moved Temporarily";
}
}
}
这里的逻辑有一个明显的错误?没有任何cookie或任何其他可能干扰我可以看到的重定向的东西。如果有人对此有任何见解,我会永远感激:) 最好的祝福 乙
答案 0 :(得分:0)
以为我会再次访问,因为任何人都在阅读同样的问题 - 我们最终解决了这个问题,这是由于一个令人难以置信的基本疏忽。
之前有另一个VCL条件干扰了重定向 - 部分匹配模式(〜)将所有匹配的移动网址重定向到桌面版本,因为这在VCL中已经出现过了。
这是显而易见的一点,但我对任何有此问题的人的建议是检查这些部分匹配,并记住它可能与网址的任何部分匹配。