在安塔利亚拉腊区一家180座的全包度假村,每张桌子都贴着同一个QR码——但慕尼黑来的家庭在早午餐时期望德语,圣彼得堡的情侣在晚餐时期望俄语。一个码,三种体验。
用CF-IPCountry做基于IP的路由
Cloudflare Workers给每个请求附加一个CF-IPCountry头——从IP推导出的ISO 3166-1 alpha-2国家码。Worker读取后做302重定向:DE → /de、RU → /ru、TR及fallback → /tr。决策在5毫秒内完成,边缘驻留。
把映射表存在KV里既便于管理又便于A/B测试。夏季荷兰客人激增时,管理员加一条NL → /de即可,无需重新部署。
覆盖浏览器语言:这个争议
Accept-Language方案在"讲德语的土耳其人"边界场景失败。一个在柏林生活了20年的土耳其家庭用德语浏览器——在安塔利亚度假时可能仍想要土耳其语菜单。CF-IPCountry表示位置,Accept-Language表示偏好。
建议:IP优先,浏览器语言做平局决胜。冲突时把手动切换器放大显示。
手动语言切换作为fallback
地理定位绝不该强制。thMenu在菜单头部展示国旗+语言胶囊,12种语言一键切换。选择会写入cookie,后续扫描时优先。
数据:三个月里12,400次扫描中8%使用了手动切换器——这正是让我们保持GDPR合规的关键。
常见问题
用VPN的客人看到什么语言? CF-IPCountry解析出口IP;走德国VPN会显示德国国旗。手动fallback救场。
漫游运营商报告外国IP怎么办? Turkcell国际漫游IP仍在土耳其CIDR块;未出问题。
会损害SEO吗? 不会。菜单页本就是noindex;Googlebot从美国IP默认落到/tr。
觉得有用?分享给朋友。