将HTTP重定向到HTTPS并保留Google Analytics referrer

9

Google Analytics显示我的网站来源中有大量的(direct)/(none),这看起来很可疑。我知道当一个HTTP网站从一个HTTPS网站链接过来时,referrer信息会丢失。

在我的情况下,我有一个安全的网站https://example.com,我使用以下Apache设置将用户转发到非安全版本:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]

当然,我无法控制外部(安全)网站通过http或https链接到我。现在我的问题是:
  • 为什么从https到http会丢失引荐信息?
  • 如果一个外部网站将我链接为http://example.com,这是否会显示为直接访问?
  • 有没有一种方法可以将用户重定向到安全的网站,同时保留引荐来源
1个回答

5

这是由于安全原因:

链接的来源可能包含私人信息或揭示其他私人信息源,因此强烈建议用户能够选择是否发送Referer字段。例如,浏览器客户端可以拥有一个切换按钮,用于在公开/匿名浏览之间切换,分别启用/禁用Referer和From信息的发送。

如果引用页面使用了安全协议,则客户端不应在(非安全的)HTTP请求中包含Referer头字段。

使用HTTP协议的服务作者不应使用基于GET的表单提交敏感数据,因为这将导致数据被编码在请求URI中。许多现有的服务器、代理和用户代理将在某些地方记录请求URI,这可能会被第三方看到。服务器可以改用基于POST的表单提交。

这种行为更好地在这里解释:

当在HTTP和HTTPS之间进行切换时,HTTP规范规定不应发送引用头(请参见RFC2616中的15.1.3)。然而,该规范并未说明HTTPS页面之间应该发生什么。

您的问题之前已经在StackOverflow上得到解决。请查看这个

一些修复建议

1)对于某些浏览器,您可以简单地向页面添加一个新的元标签:<meta name="referrer" content="always"><meta name="referrer" content="origin">。了解更多关于此的信息,请参见元标签。有关浏览器支持差异的详细信息可以在此处找到

2)您可以使用一个中间页面来跟踪页面视图,同时保留引荐者(http):http://page.com/reditect?url=https://page.com/finalpage.htm其中/redirect将调用分析来跟踪包含引荐者的finalpage.htm,然后重定向到那里。请参见完整解释

3)您可以在301重定向上添加参数,并使用ga('set', 'referrer', 'http://example.com');覆盖引荐信息。请参见完整解释。这可以与前面的方法结合使用,避免在中间页面上进行跟踪,但收集引荐数据。


就像垃圾邮件一样,但这些选项是解决此问题的最佳选择。 - Kemen Paulos Plaza
第一项需要在原始网站中设置元标记,不是吗?因此这并不是一个可行的解决方案。 - Marco Ancona
然后,试试第二个 ;) 我能想到的唯一不好的事情是,由于在重定向时跟踪页面视图(以获取特定着陆页的引荐者),然后再次重定向,可能会导致反弹率略微降低。我想你需要在某些方面做出权衡。 - nitobuendia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接