因此,我有一个AMP表单,根据用户所在的位置,需要将其重定向到其他位置。我有一个使用两个隐藏字段的设置,如下所示:
<input name="ip_address" type="hidden" value="<?php echo getRemoteIPAddress()?>">
<input name="lead_geo" type="hidden" value="<?php echo getGeoByIp()?>">
随着相应的功能,我知道它们在整个站点的其余部分都已经过尝试和测试,可以正常工作。
然后,我将端点设置为这样的限定符:
if($lead_geo == '' || $lead_geo == 'CA' || $lead_geo == 'AZ' || $lead_geo == 'IL' || $lead_geo == 'TX' || strlen($lead_geo) > 5) {
header("AMP-Redirect-To: ".$location-specific-destination);
} else {
header("AMP-Redirect-To: ".$default);
}
在缓存amp页面之前,这一切在本地,舞台和生产上都可以完美运行。问题是Google缓存了请求它的第一个IP。有没有一种方法可以让用户位于缓存的一侧?甚至即使我可以在页面上获取他们的IP,也可以让端点从中获取位置。
TLDR:当他们提交AMP表单时,如何获取用户的位置,甚至只是IP地址。
答案 0 :(得分:2)
提交用户表单时,需要获取用户的IP。缓存的版本将不包含用户的原始HTTP信息。您将必须使用IP(使用表单提交中的标头)获取服务器上的位置,而不是使用表单字段本身(现在无效)。