Cara menghapus ?m=1 secara permanen dari URL di Blogger

Temukan cara menghilangkan parameter ?m=1 dari URL Blogger Anda untuk meningkatkan pengindeksan dan mengoptimalkan kinerja blog Anda.

Jika Anda memiliki blog Blogger, Anda mungkin memperhatikan bahwa setiap halaman web blog Anda dialihkan ke URL dengan parameter kueri tambahan m=1 ketika dikunjungi di perangkat seluler. Saya pribadi tidak menyukai perilaku Blogger ini.

Menurut Blogger, tidak ada masalah dengan pengalihan ini. Namun, masalah seperti Halaman alternatif dengan tag kanonik yang tepat dan Halaman dengan pengalihan untuk banyak URL muncul di Search Console Anda, dan sebagian besar mungkin disebabkan oleh pengalihan ini.

Mengapa saya memberi tahu Anda bahwa masalah Halaman alternatif dengan tag kanonik yang tepat dan Halaman dengan pengalihan untuk sebagian besar URL disebabkan oleh pengalihan ini? Mari saya jelaskan. Misalkan perayap ponsel pintar Google merayapi postingan /2025/01/post.html yang ditemukan di /sitemap.xml, postingan tersebut akan dialihkan ke /2025/01/post.html?m=1 karena merupakan perayap ponsel pintar, sehingga URL /2025/01/post.html ditandai sebagai Halaman dengan pengalihan. Karena perayap dialihkan ke /2025/01/post.html?m=1, perayap akan merayapinya, lalu menemukan bahwa URL saat ini /2025/01/post.html?m=1 adalah halaman alternatif karena halaman tersebut telah menetapkan /2025/01/post.html sebagai URL kanoniknya melalui rel=canonical, sehingga /2025/01/post.html?m=1 ditandai sebagai Halaman alternatif dengan tag kanonik yang tepat. Postingan Anda kemungkinan akan diindeks di Google ketika perayap desktop memproses URL kanonik (/2025/01/post.html). Perayap desktop tidak menemukan pengalihan ?m=1 dan langsung mempertimbangkan versi desktop untuk pengindeksan.

Banyak dari Anda yang sudah sering bertanya kepada saya tentang cara menghilangkan pengalihan m=1. Saat ini belum ada cara bawaan Blogger untuk menghentikan perilaku ini, tetapi saya punya beberapa solusi untuk mencegah pengalihan dari sisi server, tidak seperti solusi lain yang memandu Anda untuk menghapusnya di sisi klien menggunakan JavaScript dan History API.

  1. Menggunakan Workers: Dengan menggunakan Cloudflare Workers sebagai middleware, kita dapat memodifikasi respons sebelum sampai ke pengguna. Yang bisa kita lakukan adalah mendeteksi jenis perangkat (misalnya mobile, tablet, atau desktop) menggunakan header permintaan User-Agent dan mengambil asal dengan menambahkan parameter kueri m=1 jika permintaan berasal dari perangkat seluler atau tablet, lalu mengirimkannya kembali ke pengguna. Dengan melakukan ini, pengguna tidak akan lagi dialihkan ke URL dengan parameter m saat diakses melalui perangkat seluler atau tablet.
  2. Menggunakan Rewrite Rule: Pendekatannya serupa dengan menggunakan Worker, tetapi kita akan menggunakan aturan Rewrite URL Cloudflare, alih-alih Worker, untuk mencapai hal ini. Metode ini tidak berfungsi seperti yang diharapkan karena operator matches tidak tersedia untuk zona bebas. Oleh karena itu, kita menggunakan contains untuk memeriksa apakah User-Agent berisi Mobi atau mobi. Jika ya, tulis ulang URL dengan menambahkan m=1 ke kueri.

Proses ini memerlukan domain Kustom yang diproksikan ke server Cloudflare, yang berarti Anda memerlukan Domain Kustom yang terintegrasi dengan Cloudflare. Oleh karena itu, kami tidak dapat melakukan hal yang sama untuk subdomain .blogspot.

Menurut Blogger, mereka tidak mendukung Integrasi Cloudflare. Oleh karena itu, Anda mungkin mengalami masalah yang tidak terduga jika melakukannya. Jangan mencobanya jika Anda tidak memiliki pengetahuan teknis. Jika Anda tetap ingin mencobanya, cobalah dengan risiko Anda sendiri. Saya tidak bertanggung jawab jika situs Anda offline atau terjadi kerusakan setelahnya.
Perlu diingat juga bahwa saya tidak memaksa Anda untuk melakukannya. Jika terjadi masalah, Anda akan bertanggung jawab atasnya.


Persyaratan

Sebelum kita memulai, ada beberapa hal yang harus dipenuhi:

  1. DNS harus dikelola oleh Cloudflare.

    Proxy harus diaktifkan.

Menggunakan Workers

Saya telah menggunakan metode ini selama bertahun-tahun, dan berfungsi seperti yang diharapkan. Dengan Workers, Anda bahkan dapat memodifikasi respons lebih lanjut, misalnya menulis ulang HTML menggunakan API HTMLRewriter workerd, memodifikasi header respons, dll. jika Anda cukup memahaminya.

Keterbatasan

Sebelum kita mulai, Anda perlu mengetahui tentang Batas Workers Cloudflare. Jika Anda mencapai batas ini, situs tidak akan dapat diakses. Untuk mengatasi masalah ini, Anda dapat mempertimbangkan untuk beralih ke paket berbayar.

Membuat Workers pada Cloudflare

Pertama-tama kita perlu menulis logika kita dalam aplikasi Cloudflare Workers, yang akan berfungsi sebagai middleware untuk Blog Blogger kita.

  1. Masuk ke Akun Cloudflare Anda.
  2. Buka bagian Workers & Pages dan klik Create application.
  3. Buka tab Workers dan klik Create Worker dan ganti nama worker menjadi prevent-m-redirect-blogger.
  4. Klik Deploy karena kita akan dapat mengedit kode setelah men-deploy worker Hello World!.
  5. Sekarang klik Edit code dan ganti kode yang ada dengan kode berikut:
    /**
     * Environment interface
     * 
     * @typedef Env
     * @property {string} my_var
     */
    
    // 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.

Membuat Routes

Sekarang, kita perlu memberi tahu Cloudflare rute mana yang harus dilayani oleh worker yang baru kita buat.

  1. Buka bagian Websites di Dasbor Cloudflare dan select your domain.
  2. Sekarang masuk ke bagian Workers Routes dan kemudian klik Add Route.
  3. Masukkan kolom seperti yang ditunjukkan pada tabel yang diberikan:
    Route Service Environment
    www.plusui.my.id/* prevent-m-redirect-blogger production
    *Masukkan kolom sesuai url blog dan nama workers Anda.

    Anda dapat merutekan beberapa subdomain yang dihosting di Blogger ke worker yang sama untuk mencegah pengalihan m=1.

Menggunakan Rewrite Rule

Metode ini tidak berfungsi sebagaimana mestinya karena menganggap permintaan bersifat mobile jika header User-Agent berisi Mobi atau mobi, tidak seperti Worker yang menggunakan ekspresi reguler untuk memeriksa apakah tipe perangkat User-Agent adalah mobile, tablet, atau desktop. Oleh karena itu, metode ini mungkin masih melakukan pengalihan ?m=1 jika header User-Agent tidak berisi Mobi atau mobi.

  1. Buka bagian Websites di Dasbor Cloudflare dan select your domain.
  2. Sekarang masuk ke bagian Rules > Overview.
  3. Di samping URL Rewrite Rules, pilih Create rule.
  4. Beri nama rule, yaitu Rewrite Blogger Mobile URLs.
  5. Di bawah If incoming requests match…, pilih Custom filter expression.
  6. Klik Edit Expression dan tempel kode berikut di kolom dan ganti url blog dengan milik Anda:
    http.request.full_uri wildcard "http*://www.plusui.my.id/*" 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..., alihkan dari Static ke Dynamic lalu tempelkan kode berikut pada kolom:
    wildcard_replace(http.request.uri.query, "*", "${1}&m=1")
  9. Klik Deploy.

Kesimpulan

Meskipun metode yang dibahas di atas tidak sepenuhnya menghilangkan kesalahan konsol pencarian seperti Halaman alternatif dengan tag kanonik yang tepat atau Halaman dengan pengalihan, metode ini dapat mengurangi kejadiannya secara signifikan dengan mencegah pengalihan ?m=1 yang tidak perlu untuk perangkat seluler dan tablet. Menerapkan solusi ini dapat meningkatkan pengindeksan dan kinerja blog Anda secara keseluruhan, tetapi penting untuk mengikuti langkah-langkahnya dengan cermat dan menyadari batasan serta risiko yang terlibat, terutama saat berintegrasi dengan Cloudflare. Pada akhirnya, solusi ini memberikan kontrol lebih besar atas penanganan URL Blogger Anda, sehingga meningkatkan upaya optimasi blog Anda.

Copyright (c):
fineshopdesign.com

Posting Komentar