ตามที่ฉันเข้าใจพารามิเตอร์คือวิธีการติดตามผู้เยี่ยมชมไซต์ดังนั้นหากไซต์ของคุณมีโฆษณาจาก 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 เปลี่ยนเส้นทางแคช โดยค่าเริ่มต้นเบราว์เซอร์หลายแคชมันอย่างแท้จริงตลอดไป ซึ่งจะลดลงเหลือหนึ่งสัปดาห์ (หรือ 604,800 วินาที) ฉันอาจจะเป็นคนส่วนน้อยที่คิดแบบนี้ แต่ดูเหมือนจะเป็นแนวทางที่ดีสำหรับฉัน ฉันไม่รู้ว่าfbclid
โทเค็นคงอยู่ได้นานแค่ไหนแต่ถ้าใช้งานได้นานนั่นหมายความว่า Facebook จะนำผู้เยี่ยมชมไปยัง URL เดิมเป็นเวลานานและหากคุณต้องการสนับสนุนโฆษณาที่กำหนดเป้าหมายของ Facebook หรือหากพวกเขาเริ่ม เมื่อใช้fbclid
ฟังก์ชันอื่น ๆ ที่คุณต้องการคุณอาจพบว่าการเปลี่ยนเส้นทางที่แคชถาวรเหล่านี้กลับมากัดกิน แต่ถ้าคุณยินดีที่จะเสี่ยงคุณสามารถลบทั้งHeader
คำสั่งและE=limitcache:1
แฟล็กได้
การทดสอบทั้งสองแบบ%{REQUEST_METHOD}
คือเพื่อป้องกันไม่ให้ Apache เปลี่ยนเส้นทางคำขอ POST (หรือคำขอลึกลับอื่น ๆ เช่น PUT หรือ DELETE หากเกี่ยวข้อง) เบราว์เซอร์ส่วนใหญ่เปลี่ยนคำขอที่จะเป็นคำขอที่ได้รับใน 301 หรือ 302 เปลี่ยนเส้นทางซึ่งได้รับอนุญาตอย่างชัดเจนโดยRFC 7231 มีรหัสการเปลี่ยนเส้นทาง 308 ใหม่ต้องไม่มีวิธีการเขียนซ้ำแต่น่าเสียดายที่Internet Explorer บน Windows 7 ไม่รองรับ (และอาจไม่เป็นเช่นนั้น)