Theo tôi hiểu, tham số là một phương tiện theo dõi người truy cập trang web để nếu trang web của bạn có quảng cáo từ Facebook, họ có thể tùy chỉnh nó để phù hợp với thói quen duyệt web được ghi lại của người truy cập.
mod_rewrite
Giải pháp Apache ở trên có vấn đề vì nó tách toàn bộ chuỗi truy vấn. Nếu URL đã có một chuỗi truy vấn, điều này sẽ phá vỡ nó. Để loại bỏ chỉ fbclid
tham số, điều hữu ích cần lưu ý là Facebook luôn gắn nó vào một URL, vì vậy nó luôn ở cuối cùng. Điều đó đơn giản mod_rewrite
hóa mã một chút. Đây là những gì tôi làm:
# 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
Các E=limitcache:1
lá cờ và Header
chỉ là để hạn chế sự chuyển hướng 301 được lưu trữ trong bao lâu. Theo mặc định, nhiều trình duyệt sẽ lưu nó vào bộ nhớ cache theo nghĩa đen mãi mãi . Điều này giảm xuống còn một tuần (hoặc 604.800 giây). Tôi có thể là một thiểu số trong suy nghĩ này, nhưng đó có vẻ là một thực tiễn tốt đối với tôi. Tôi không biết fbclid
các mã thông báo tồn tại trong bao lâu , nhưng nếu chúng tồn tại lâu dài, điều đó có nghĩa là Facebook sẽ hướng khách truy cập đến cùng các URL trong một thời gian dài và nếu bạn muốn hỗ trợ các quảng cáo được nhắm mục tiêu của Facebook hoặc nếu chúng bắt đầu bằng cách sử dụng fbclid
chức năng khác mà bạn cần, bạn có thể thấy các chuyển hướng được lưu trong bộ nhớ cache vĩnh viễn này trở lại thành công. Nhưng nếu bạn sẵn sàng mạo hiểm, bạn có thể xóa cả lệnh Header
và E=limitcache:1
cờ.
Hai bài kiểm tra %{REQUEST_METHOD}
là ngăn Apache chuyển hướng các yêu cầu POST (hoặc nhiều yêu cầu bí truyền hơn như PUT hoặc DELETE, nếu chúng có liên quan). Hầu hết các trình duyệt thay đổi yêu cầu thành yêu cầu GET trên chuyển hướng 301 hoặc 302, được RFC 7231 cho phép một cách rõ ràng . Có một mã chuyển hướng 308 mới không được viết lại phương thức của nó, nhưng tiếc là nó không được hỗ trợ bởi Internet Explorer trên Windows 7 (và có lẽ sẽ không bao giờ được).