it-swarm.cn

什么是fbclid?新的facebook参数

两天,我注意到我在Facebook上发布的URL,有一个参数被添加:
?fbclid=uFCrBkUgEvKg...
更确切地说:http://example.com?fbclid=uFCrBkUgEvKg...

有谁知道这个参数是做什么的?
它的用途是什么,开发人员的用途是什么?

感谢您的意见。

60
Rafael Dorado

我知道gclid,是( _ g _ oogle Cl ick Id entifier)的缩写
这是一个独特的 跟踪参数 Google 用于在您的Google广告帐户和Google Analytics帐户之间传输信息。

Facebook 必须使用fbclid执行相同或类似的操作,以改进跟踪分析系统。

19
Marcin Milowski

这对我有所帮助: https://greasyfork.org/en/forum/discussion/44083/fbclid-tracking-parameter-attached-by-facebook

以下链接引用:

将此代码放在.htaccess文件中:

RewriteCond %{QUERY_STRING} "fbclid=" [NC]
RewriteRule (.*) /$1? [R=301,L]

如果你在WordPress工作:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} "fbclid=" [NC]
RewriteRule (.*) /$1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
17
no one special

另一种方法是,如何删除此参数(以便您的用户可以共享您的URL而无需手动删除它)是使用JavaScript和history.replaceState

所有学分归原作者所有 - https://www.michalspacek.cz/zmena-url-a-skryvani-fbclid-pomoci-javascriptu

链接代码:

(function() {
        var param = 'fbclid';
        if (location.search.indexOf(param + '=') !== -1) {
                var replace = '';
                try {
                        var url = new URL(location);
                        url.searchParams.delete(param);
                        replace = url.href;
                } catch (ex) {
                        var regExp = new RegExp('[?&]' + param + '=.*$');
                        replace = location.search.replace(regExp, '');
                        replace = location.pathname + replace + location.hash;
                }
                history.replaceState(null, '', replace);
        }
})();
11
Pavel Štěrba

据我了解,该参数是一种跟踪网站访问者的方法,这样如果您的网站包含来自Facebook的广告,他们可以自定义它以匹配访问者的记录浏览习惯。

Apache mod_rewrite上面的解决方案 是有问题的,因为它剥离了整个查询字符串。如果URL已经有一个查询字符串,这将打破它。要删除fbclid参数,注意Facebook总是将其附加到URL是有用的,因此它总是最后的。这简化了mod_rewrite代码。这就是我做的:

# Strip Facebook spyware tokens
RewriteCond %{REQUEST_METHOD} =GET [NC,OR]
RewriteCond %{REQUEST_METHOD} =HEAD [NC]
RewriteCond %{QUERY_STRING} ^(.*)&?fbclid=[^&]+$ [NC]
RewriteRule ^/?(.*)$ /$1?%1 [NE,L,R=301,E=limitcache:1]
Header always set Cache-Control "max-age=604800" env=limitcache

E=limitcache:1标志和Header指令用于限制缓存301重定向的时间。默认情况下,许多浏览器 从字面上缓存它 forever 。这减少到一周(或604,800秒)。我可能在少数人的想法中,但这对我来说似乎是好习惯。我不知道fbclid令牌持续多久,但如果它们持久,那就意味着Facebook会长时间将访问者引导到相同的URL,如果你想支持Facebook的目标广告,或者如果他们开始使用fbclid来获取您需要的其他功能,您可能会发现这些永久缓存的重定向会重新出现。但是如果您愿意冒险,可以删除Header指令和E=limitcache:1标志。

%{REQUEST_METHOD}的两个测试是为了防止Apache重定向POST请求(或更多深奥的请求,如PUT或DELETE,如果它们是相关的)。大多数浏览器将请求更改为301或302重定向上的GET请求,这是 RFC 7231 明确允许的。有一个 新的308重定向代码 不能重写它的方法,但不幸的是 Windows 7上的Internet Explorer不支持 (可能永远不会)。

5
Richard Smith