我有点困惑……
我有一个最近已克隆的 linode.com VPS,因此 nginx 服务器之间的设置是相同的。
一个位于 dev 子域上,一个位于 www 上。
我正在尝试在我的实时服务器上运行谷歌实验,它声称:
Web 服务器拒绝 utm_expid。您的服务器不支持在 URL 中添加查询参数。
我的日志显示在它工作的开发服务器上:
74.125.186.32 - - [13/Sep/2012:13:33:45 -0700]
"GET /product/iphone-case/?utm_expid=25706866-0
HTTP/1.1" 200 12521 "-" "Google_Analytics_Content_Experiments
74.125.186.32 - - [13/Sep/2012:13:33:45 -0700]
"GET /product/iphone-case/?ab_reviews=True&utm_expid=25706866-0
HTTP/1.1" 200 14679 "-" "Google_Analytics_Content_Experiments
我的生产服务器显示谷歌正在发出第二个请求。
74.125.186.41 - - [13/Sep/2012:13:34:49 -0700]
"GET /product/iphone-case/?ab_reviews=on&utm_expid=25706866-1
HTTP/1.1" 200 12104 "-" "Google_Analytics_Content_Experiments
74.125.186.41 - - [13/Sep/2012:13:34:49 -0700]
"GET /product/iphone-case/?utm_expid=25706866-1
HTTP/1.1" 200 12122 "-" "Google_Analytics_Content_Experiments
74.125.186.41 - - [13/Sep/2012:13:34:49 -0700]
"GET /product/iphone-case/ <--- A second request for some reason.
HTTP/1.1" 200 12522 "-" "Google_Analytics_Content_Experiments
我不知道谷歌如何确定为什么它需要发送第二个没有查询字符串的请求。原始请求显然已经发送了 200 OK 状态响应。
有人能建议下一步该看哪里吗?两个页面的 HTML(按 diff 比较)是确切地相同。
答案1
我不确定是什么原因造成的;但现在已经修复了。
对于遇到类似问题的人,我只能建议查看 HTML 文档。我认为我的问题可能与在开发环境 (dev.foo) 上运行测试并设置此类活动有关;然后将该活动移动到具有相同跟踪代码的实时环境。
在这些页面的各种版本的缓存方面出现一些问题之后,我们就遇到了问题。
很抱歉我无法说得更清楚!