Nginx 清除網址上各式網站的標籤

前言

現在的社群軟體,如:Facebook、Instagram 等,如果你在他的平台點選一個外連連結,那他就會在網址的結尾加上自己的參數,這會使得網址變超級長。更重要的事情是,如果你正在使用 Google Analytics 這類的分析工具,那他會被視為是不同的網址,這對我們在分析網址成效的時候相當不方便。

這篇文會簡易的告訴你,如何使用 Nginx 來提前將這些參數去除掉,不去影響到各種分析工具。

解決方式

我們如何在 Nginx 預先處理掉這些東西?我的作法是讓 Nginx 檢查看看網址是否帶有這些參數,如果有就將網址清理乾淨,並使用 301 重新導向到乾淨的網址。這篇文章我以惱人的 Facebook 參數 fbclid 為例,我們來將它清除掉。

我們需要在網站的設定檔裡面加上一些內容,通常這些設定檔會放在 /etc/nginx/sites-enabled 底下,新增開頭的 map 以及中間的 if

map $request_uri $redirect_fbclid {
    "~^(.*?)([?&]fbclid=[a-zA-Z0-9_-]+)$"  $1;
}

server {
    listen 80;
    root /var/www/html;
    index index.html index.htm;
    server_name www.example.com;

    if ( $redirect_fbclid ) {
        return 301 $redirect_fbclid;
    }

    location / {
        try_files $uri $uri/ =404;
    }
}

使用 sudo nginx -t 來檢查設定檔是否有問題,並使用 sudo systemctl restart nginx 來重啟 Nginx。

接著,嘗試到你的網站,並在網址後面添加 fbclid 參數,看看 Nginx 是否會將你重新導向乾淨的網址囉!