Як я розумію, параметр є засобом відстеження відвідувача сайту, щоб, якщо ваш сайт включає рекламу з Facebook, вони могли налаштувати його відповідно до записаних звичок перегляду відвідувача.
mod_rewrite
Наведене вище рішення Apache є проблематичним, оскільки воно видаляє весь рядок запиту. Якщо 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 редирект. За замовчуванням багато браузерів кешують його буквально назавжди . Це зменшує це до одного тижня (або 604800 секунд). Можливо, я в меншості, думаючи про це, але це здається мені гарною практикою. Я не знаю, як довго fbclid
токени зберігаються, але якщо вони довговічні, це означає, що Facebook буде направляти відвідувачів на ті самі URL-адреси протягом тривалого часу, і якщо ви коли-небудь захочете підтримати цільові реклами Facebook або якщо вони почнуть використовуючи fbclid
для інших функціональних можливостей, які вам потрібні, ви можете виявити, що ці постійно кешовані переспрямування повертаються до укусу. Але якщо ви готові ризикнути, ви можете видалити і Header
директиву, і E=limitcache:1
прапор.
Два тести, %{REQUEST_METHOD}
спрямовані на те, щоб Apache не перенаправляв запити POST (або більше езотеричних запитів, таких як PUT або DELETE, якщо вони актуальні). Більшість браузерів змінюють запит на запит GET при перенаправленні 301 або 302, що явно дозволено RFC 7231 . Існує новий код перенаправлення 308, який не повинен переписувати свій метод, але, на жаль, він не підтримується Internet Explorer у Windows 7 (і, мабуть, ніколи не буде).