Prefetch Manager

Progress:0/0
Success
0
Failed
0
Pending
0
Time
0s
Success URLs(0)
Failed URLs(0)
Pending URLs(0)

Cara menghapus / menghilangkan parameter ?m=1 dari URL Blogger

Cara menghilangkan parameter ?m=1 dari URL Blogger supaya indexing lebih optimal dan performa blog makin maksimal

Kalau kamu punya blog Blogger, pasti udah nyadar kan kalau setiap halaman blog kamu bakal otomatis redirect ke URL yang ada tambahan parameter m=1 di belakangnya kalau dibuka lewat device mobile. Sejujurnya, gue pribadi nggak suka sama perilaku Blogger yang kayak gini.

Menurut Blogger sih nggak ada masalah dengan redirect ini. Tapi kenyataannya, masalah kayak Alternative page with proper canonical tag sama Page with redirect untuk banyak URL bakal numpuk di Search Console kamu, dan kemungkinan besar sebagian besar disebabkan gara-gara redirect ini.

Kenapa gue bilang masalah Alternative page with proper canonical tag sama Page with redirect untuk kebanyakan URL itu disebabkan sama redirect ini? Coba gue jelasin. Misalnya nih, crawler smartphone Google nge-crawl postingan /2025/01/post.html yang ketemu di /sitemap.xml, terus dia langsung di-redirect ke /2025/01/post.html?m=1 karena emang crawler-nya dari smartphone. Nah, URL /2025/01/post.html ini akhirnya ditandai sebagai Page with redirect. Karena crawler-nya udah di-redirect ke /2025/01/post.html?m=1, sekarang dia bakal crawl URL yang ini, terus dia nemuin kalau URL saat ini /2025/01/post.html?m=1 adalah halaman alternatif soalnya halaman tersebut udah nge-define /2025/01/post.html sebagai canonical URL-nya lewat tag rel=canonical, jadilah /2025/01/post.html?m=1 ditandai sebagai Alternative page with proper canonical tag. Postingan kamu kemungkinan besar baru bakal ke-index di Google waktu crawler desktop nge-proses canonical URL-nya (/2025/01/post.html), soalnya crawler desktop nggak ketemu redirect ?m=1 dan langsung nganggep versi desktop buat indexing.

Banyak dari kalian yang udah nanya ke gue berkali-kali tentang cara ngilangin redirect m=1 ini. Sayangnya saat ini belum ada cara native dari Blogger buat ngehentiin perilaku ini, tapi gue punya beberapa solusi alternatif yang bisa mencegah redirect dari sisi server, bukan dari sisi client pake Javascript dan History API kayak tutorial lainnya.

  1. Pakai Workers: Dengan menggunakan Cloudflare Workers sebagai middleware, kita bisa modifikasi response sebelum sampai ke user. Yang kita lakuin adalah deteksi tipe device (yaitu mobile, tablet atau desktop) pakai request header User-Agent, terus fetch origin-nya dengan nambahkan parameter query m=1 kalau request datangnya dari mobile atau tablet, baru kirim balik ke user. Dengan cara ini, user nggak bakal di-redirect lagi ke URL yang ada parameter m waktu dibuka di mobile atau tablet.
  2. Pakai Rewrite Rule: Pendekatannya mirip sama pakai Workers, cuma kita bakal pakai fitur Rewrite URL rule dari Cloudflare sebagai gantinya. Metode ini nggak seefektif Workers soalnya operator matches nggak tersedia buat zona gratis, jadi kita pakai contains aja buat ngecek apakah User-Agent mengandung Mobi atau mobi. Kalau iya, URL bakal di-rewrite dengan nambahkan m=1 ke query.

Proses ini butuh Custom domain yang di-proxy ke server Cloudflare, yang artinya kamu harus punya Custom Domain yang udah terintegrasi dengan Cloudflare. Makanya, kita nggak bisa lakuin hal yang sama buat subdomain .blogspot.

Menurut Blogger, mereka nggak support integrasi Cloudflare. Jadi kamu mungkin bakal ngalamin masalah yang nggak terduga kalau tetep nekat. Jangan coba-coba kalau kamu nggak punya pengetahuan teknis yang cukup. Kalau masih pengen nyoba, lakukan atas risiko kamu sendiri, gue nggak bertanggung jawab kalau site kamu jadi offline atau ada yang rusak setelah ini.
Dan inget, gue nggak maksa kamu buat lakuin ini. Kalau ada masalah yang terjadi, itu tanggung jawab kamu sendiri.


Yang Perlu Disiapkan

Sebelum mulai, ada beberapa hal yang wajib kamu penuhi:

  1. DNS harus dikelola oleh Cloudflare.

    Proxy harus diaktifkan.

Pakai Workers

Gue udah pakai metode ini dari bertahun-tahun yang lalu, dan berfungsi sesuai ekspektasi. Pakai Workers, kamu bahkan bisa modifikasi response lebih lanjut, misalnya rewriting html pakai API HTMLRewriter dari workerd, modifikasi response headers, dan lain-lain kalau kamu punya pengetahuan yang cukup soal ini.

Batasan yang Perlu Kamu Tahu

Sebelum kita mulai, kamu harus sadar tentang Batasan Cloudflare Workers. Kalau kamu nyentuh batas ini, site kamu nggak bakal bisa diakses. Buat ngatasi masalah ini, kamu bisa pertimbangin buat upgrade ke paket berbayar.

Bikin Workers di Cloudflare

Pertama-tama kita perlu nulis logic di aplikasi Cloudflare Workers, yang bakal jadi middleware buat Blog Blogger kita.

  1. Login ke akun Cloudflare kamu.
  2. Masuk ke bagian Workers & Pages terus klik Create application.
  3. Ke tab Workers terus klik Create Worker dan ganti nama worker-nya jadi prevent-m-redirect-blogger.
  4. Klik Deploy karena kita baru bisa edit kode setelah deploy worker Hello World! dulu.
  5. Sekarang klik Edit code terus ganti kode yang ada dengan kode berikut ini:
    
    
    // constants
    const MOBILE_REGEX = /(?:phone|windows\s+phone|ipod|blackberry|(?:android|bb\d+|meego|silk|googlebot) .+? mobile|palm|windows\s+ce|opera\ mini|avantgo|mobilesafari|docomo|KAIOS)/i;
    const TABLET_REGEX = /(?:ipad|playbook|(?:android|bb\d+|meego|silk)(?! .+? mobile))/i;
    
    /**
     * A helper function to get the device type from user-agent
     * 
     * @param {string | null} userAgent
     * 
     * @returns {"mobile" | "tablet" | "desktop"}
     */
    const getDeviceType = (userAgent) => {
      if (typeof userAgent === "string") {
        if (MOBILE_REGEX.test(userAgent)) {
          return "mobile";
        }
    
        if (TABLET_REGEX.test(userAgent)) {
          return "tablet";
        }
      }
    
      // Everything else not matched above will be considered as desktop
      return "desktop";
    }
    
    /**
     * An object with workers handlers
     * 
     * @type {ExportedHandler<Env>}
     */
    const worker = {
      async fetch(request, env, context) {
        // Get the device type from user-agent header
        const deviceType = getDeviceType(request.headers.get("User-Agent"));
    
        const proxiedUrl = new URL(request.url);
        // Set the search param 'm' with value '1' if the device type is not 'desktop'
        if (deviceType !== "desktop") {
          proxiedUrl.searchParams.set("m", "1")
        }
    
        const proxiedRequest = new Request(proxiedUrl, {
          method: request.method,
          body: request.body,
          headers: request.headers,
          redirect: "follow"
        });
    
        const proxiedResponse = await fetch(proxiedRequest);
    
        const response = new Response(proxiedResponse.body, proxiedResponse);
    
        // OPTIONAL: You can further modify the response here :)
    
        return response;
      }
    }
    
    // Export handlers
    export default worker;
  6. Klik Save and Deploy.

Bikin Routes

Sekarang, kita perlu kasih tau Cloudflare route mana aja yang harus di-serve sama worker yang baru kita bikin tadi.

  1. Masuk ke bagian Websites di Cloudflare Dashboard terus pilih domain kamu.
  2. Sekarang ke bagian Workers Routes terus klik Add Route.
  3. Isi field-nya seperti yang ditunjukkan di tabel berikut:
    Route Service Environment
    www.hanhaoyu.com/* prevent-m-redirect-blogger production
    *Isi field sesuai dengan URL blog dan nama workers kamu.

    Kamu bisa route beberapa subdomain yang di-host di Blogger ke worker yang sama buat mencegah redirect m=1.

Pakai Rewrite Rule

Metode ini nggak seefektif yang pertama karena dia nganggep request sebagai mobile kalau header User-Agent mengandung Mobi atau mobi, beda sama Workers yang pakai regular expressions buat ngecek apakah tipe device dari User-Agent itu mobile, tablet atau desktop. Jadi mungkin masih ada redirect ?m=1 di kasus-kasus tertentu di mana header User-Agent nggak mengandung Mobi atau mobi.

  1. Masuk ke bagian Websites di Cloudflare Dashboard terus pilih domain kamu.
  2. Sekarang ke bagian Rules > Overview.
  3. Di samping URL Rewrite Rules, pilih Create rule.
  4. Kasih nama rule-nya, misalnya Rewrite Blogger Mobile URLs.
  5. Di bawah If incoming requests match…, pilih Custom filter expression.
  6. Klik Edit Expression terus paste kode berikut di field-nya dan ganti URL blog dengan punya kamu:
    http.request.full_uri wildcard "http*://www.hanhaoyu.com/*" and
    (http.user_agent contains "mobi" or http.user_agent contains "Mobi")
  7. Di bawah Path, pilih Preserve.
  8. Di bawah Query, pilih Rewrite to..., ganti dari Static ke Dynamic terus paste kode berikut:
    wildcard_replace(http.request.uri.query, "*", "${1}&m=1")
  9. Klik Deploy.

Kesimpulan

Meskipun metode yang udah kita bahas di atas nggak sepenuhnya ngilangin error di search console kayak Alternative page with proper canonical tag atau Page with redirect, tapi setidaknya bisa ngurangin kejadiannya secara signifikan dengan cara mencegah redirect ?m=1 yang nggak perlu buat device mobile dan tablet. Implementasi solusi ini bisa ningkatin indexing blog kamu dan performa keseluruhan, tapi penting banget buat ikutin langkah-langkahnya dengan hati-hati dan sadar sama batasan serta risiko yang ada, terutama waktu integrasi sama Cloudflare. Pada akhirnya, solusi alternatif ini kasih kamu kontrol lebih banyak soal gimana URL Blogger kamu ditangani, yang bisa ningkatin usaha optimasi blog kamu.

Copyright (c):
hanhaoyu.com

About the author

Han Haoyu
Hai semuanyaa, it's me, i'm here~ Hai semuanyaa, it's me, i'm here~

Posting Komentar

Terima kasih atas kunjungan Anda di website kami. Kami sangat menghargai setiap komentar dan masukan yang diberikan oleh pembaca kami. Sebelum mengirimkan komentar, harap diingat untuk tetap mengikuti etika dan sopan santun dalam berkomunikasi. Kami tidak akan mentoleransi komentar yang mengandung pelecehan, intimidasi, diskriminasi, atau konten yang tidak pantas.

Pastikan komentar yang Anda sampaikan relevan dengan topik postingan dan tidak melanggar hak cipta atau privasi orang lain. Kami berhak untuk meninjau, mengedit, atau menghapus komentar yang tidak sesuai dengan kebijakan kami tanpa pemberitahuan sebelumnya.

Kami mengundang Anda untuk memberikan masukan yang konstruktif dan berguna bagi pembaca kami. Silakan berikan pendapat, saran, atau pengalaman Anda yang dapat meningkatkan kualitas konten kami dan memberikan manfaat bagi pembaca lainnya. Terima kasih atas partisipasi Anda dalam komunitas kami. Silakan berkomentar dengan bijak dan santun.

Gabung dalam percakapan

Gabung dalam percakapan