Pelo que entendi, o parâmetro é um meio de rastrear o visitante do site para que, se o seu site incluir publicidade do Facebook, eles possam personalizá-lo para corresponder aos hábitos de navegação registrados do visitante.
A mod_rewrite
solução do Apache acima é problemática porque remove toda a string de consulta. Se o URL já tiver uma string de consulta, isso irá quebrá-lo. Para retirar apenas o fbclid
parâmetro, é útil observar que o Facebook sempre o anexa a uma URL, então é sempre o último. Isso simplifica mod_rewrite
um pouco o código. Isto é o que eu faço:
# 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
O E=limitcache:1
sinalizador e a Header
diretiva são para limitar por quanto tempo o redirecionamento 301 é armazenado em cache. Por padrão, muitos navegadores armazenam em cache literalmente para sempre . Isso reduz para uma semana (ou 604.800 segundos). Posso estar em minoria pensando assim, mas parece uma boa prática para mim. Não sei por quanto tempo os fbclid
tokens persistem, mas se durarem muito, significa que o Facebook direcionará os visitantes para os mesmos URLs por um longo tempo e se você quiser oferecer suporte aos anúncios direcionados do Facebook ou se eles começarem usando o fbclid
para outra funcionalidade de que você precisa, você pode descobrir que esses redirecionamentos permanentemente armazenados em cache voltam a funcionar. Mas se você estiver disposto a arriscar, pode excluir a Header
diretiva e o E=limitcache:1
sinalizador.
Os dois testes %{REQUEST_METHOD}
são para evitar que o Apache redirecione solicitações POST (ou solicitações mais esotéricas como PUT ou DELETE, se forem relevantes). A maioria dos navegadores altera a solicitação para ser uma solicitação GET em um redirecionamento 301 ou 302, o que é explicitamente permitido pelo RFC 7231 . Há um novo código de redirecionamento 308 que não deve ter seu método reescrito, mas infelizmente não é compatível com o Internet Explorer no Windows 7 (e provavelmente nunca será).