Header Ads

MENGHAPUS FACEBOOK FBCLID PARAMETER MENGGUNAKAN QUERY MOD_REWRITE DI .HTACCESS




REMOVE FACEBOOK FBCLID PARAMETER MENGGUNAKAN QUERY MOD_REWRITE DI .HTACCESS. Si kampret tukang ngekor ini bernama Facebook fbclid. Facebook menambahkan pengidentifikasi klik unik untuk semua link keluar dari facebook.com. Sering kita temuin ketika ada share link di timeline Facebook kita, kita kemudian klik link tersebut kemudian menuju ke halaman website lain.

Beberapa CMS website pada dasarnya cukup kompatibel dengan adanya parameter ini dan tidak mempermasalahkannya, akan tetapi juga tergantung pada "kebijakan" dari server (server’s security policies) dimana website kita di install disitu, karena ternyata, tidak semua server bisa responsive dengan penambahan parameter indentifier yang diterapkan Facebook. Bahkan script native PHP saja mendapatkan error dan mengarah ke halaman 404.

Mari kita lupakan kebijakan keamanan server (server security policies) dan bagaimana kita dapat menggunakan modul mod_rewrite Apache untuk menghentikan Facebook dari mencemari URL kita dan terlempar ke halaman 404 yang notabene sebagai halaman yang tidak ada.

Menghilangkan fbclid

Sebagai contoh: taruhlah saya sharing url blog ini https://blog.aming.info/ ke Facebook, kemudian ada yang klik dari timeline Facebook-nya dan mengarah ke link target. lalu mendapatkan query string: https://blog.aming.info/?fbclid=IwAR1vAgsRULmzf980S9ONhbEkptibvSQbEwKVK9tXFgC2TS_ZSB_reF63BHM.

Yang ingin saya lakukan adalah menghilangkan parameter fbclid dan nilai dari URL tersebut sambil menjaga parameter lainnya tetap utuh, dan mengarahkan pengunjung yang datang dari Facebook ke URL yang semestinya.

Stripping parameter fbclid dan nilai Facebook dari URL menggunakan mod_rewrite.

Dengan mod_rewrite, kita dapat memanipulasi string query dan menghapus kemunculan ?fbclid=kampret sembari mempertahankan parameter yang tersisa. Aturan penulisan ulang berikut tidak persis seperti itu:

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)fbclid=(?:[^&]*)((?:&|$).*)$ [NC]
RewriteCond %1%2 (^|&)([^&].*|$)
RewriteRule ^(.*) /$1?%2 [R=301,L]
</IfModule>

Harap perhatikan bahwa konfigurasi di atas menggunakan file .htaccess WordPress default. Aturan penulisan ulang harus diletakkan sebelum aturan penulisan ulang WordPress (# BEGIN WordPress ... # END WordPress).

Contoh string query tambahan tersedia dari wiki.apache.org.
Pendekatan ini sedikit berlebihan karena parameter fbclid akan selalu menjadi parameter terakhir dari string query, tetapi setidaknya lebih fleksibel:
1) RewriteCond %{QUERY_STRING} ^(.*)(?:^|&)fbclid=(?:[^&]*)((?:&|$).*)$ [NC]
# Matches fbclid=anything and captures the remaining parameters in backreferences (%1%2)

2) RewriteCond %1%2 (^|&)([^&].*|$)
# Captures any leading '&' char and the remainder of the string in backreferences (%1%2)

3) RewriteRule ^(.*) /$1?%2 [R=301,L]
# Redirects to the requested path ($1) and appends the query string (%2)

Tambahan:
Bagian berikut hanya relevan jika Anda secara eksplisit memvalidasi validating the HTTP request line dan perlu mengizinkan lalu lintas masuk dari Facebook sebelum menjalankan manipulasi string query.

<ifmodule mod_rewrite.c>
RewriteCond %{THE_REQUEST} !^(GET|HEAD)\ (/|/[a-zA-Z0-9/\-_#]+)(\.jpe?g|\.gif|\.png|\.woff2?|\.ttf|\.xml(\.gz)?|\.xsl|\.ico|\.css|\.txt|\.html(\.gz)?|\?fbclid=[a-zA-Z0-9\-_]+|\.well-known[a-zA-Z0-9/\-_]+(\.txt)?)?\ HTTP/(1\.1|2\.0)$
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1$
RewriteCond %{REMOTE_HOST} !^1\.2\.3\.4$
RewriteRule ^(.*)$ - [L,R=403]
</IfModule>