A quanto ho capito, il parametro è un mezzo per tracciare il visitatore del sito in modo che se il tuo sito include pubblicità da Facebook, possono personalizzarlo per adattarlo alle abitudini di navigazione registrate del visitatore.
La mod_rewrite
soluzione Apache sopra è problematica perché rimuove l'intera stringa di query. Se l'URL aveva già una stringa di query, verrà interrotta. Per rimuovere solo il fbclid
parametro, è utile notare che Facebook lo aggiunge sempre a un URL, quindi è sempre l'ultimo. Questo semplifica mod_rewrite
un po ' il codice. Questo è ciò che faccio:
# 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
Il E=limitcache:1
flag e la Header
direttiva servono a limitare il tempo di memorizzazione nella cache del reindirizzamento 301. Per impostazione predefinita, molti browser lo memorizzano nella cache letteralmente per sempre . Questo lo riduce a una settimana (o 604.800 secondi). Potrei essere in minoranza nel pensare questo, ma mi sembra una buona pratica. Non so per quanto tempo i fbclid
token persistono, ma se durano a lungo, significa che Facebook indirizzerà i visitatori agli stessi URL per molto tempo e se mai vorrai supportare gli annunci mirati di Facebook, o se iniziano utilizzando fbclid
per altre funzionalità di cui hai bisogno, potresti scoprire che questi reindirizzamenti memorizzati nella cache permanente tornano a mordere. Ma se sei disposto a rischiare, puoi eliminare sia la Header
direttiva che il E=limitcache:1
flag.
I due test %{REQUEST_METHOD}
servono per impedire ad Apache di reindirizzare le richieste POST (o richieste più esoteriche come PUT o DELETE, se pertinenti). La maggior parte dei browser cambia la richiesta in una richiesta GET su un reindirizzamento 301 o 302, che è esplicitamente consentito dalla RFC 7231 . C'è un nuovo codice di reindirizzamento 308 che non deve avere il suo metodo riscritto, ma sfortunatamente non è supportato da Internet Explorer su Windows 7 (e probabilmente non lo sarà mai).