Google Search Console sering menandakan ralat soft 404 dalam laman web Next.js, yang boleh membazirkan bajet merangkak (crawl budget).

Apa sebenarnya soft 404 itu

Respons 404 yang sebenar menghantar kod status HTTP 404, memberitahu pelayar dan bot bahawa sumber yang diminta tidak wujud. Sebaliknya, soft 404 mengembalikan status 200 OK walaupun ia memberikan kandungan yang sedikit atau tiada langsung. Enjin carian membaca 200 sebagai halaman yang sihat, namun halaman tersebut tidak memberikan sebarang nilai. Hasilnya ialah kitaran merangkak (crawl cycles) yang membazir dan isyarat kepada Google bahawa kualiti kandungan laman web tersebut adalah rendah.

Mengapa Next.js terperangkap dalam masalah ini

Penghalaan dinamik (dynamic routing) Next.js membolehkan anda menyediakan halaman seperti /products/[slug] tanpa perlu mengekod setiap URL secara manual. Apabila sesuatu produk hilang daripada pangkalan data, komponen tersebut masih akan dipaparkan (render), dan jika kod tidak menyemak data yang hilang, Next.js akan membalas dengan 200 OK secara lalai. Perkara yang sama berlaku apabila pengguna tersalah taip URL atau apabila laluan (routes) lama masih wujud selepas penjenamaan semula. Halaman tersebut dimuatkan, tetapi ia tidak menawarkan kandungan yang bermakna, lalu mencetuskan tanda soft-404 dalam Search Console.

Risiko kepada pemilik laman web

  • Pembaziran bajet merangkak – Bot memperuntukkan jumlah permintaan yang terhad bagi setiap laman web. Soft 404 memakan kuota tersebut, meninggalkan peluang yang lebih sedikit untuk halaman sebenar diindeks.
  • Penalti SEO – Soft 404 yang berulang memberitahu enjin carian bahawa laman web tersebut berkualiti rendah.
  • Kesan terhadap pengalaman pengguna – Pelawat yang mendarat di halaman kosong akan terus keluar (bounce), meningkatkan kadar lantunan (bounce rates) dan menjejaskan penukaran (conversions).

Cara menukarkan soft 404 kepada 404 yang betul

1. Gunakan pembantu notFound terbina dalam

  • App Router – Import notFound daripada next/navigation. Selepas mengambil data, panggil notFound() jika keputusan tidak ditemui. Next.js kemudian akan menghantar status 404 yang sebenar.
  • Pages Router – Pulangkan { notFound: true } daripada getStaticProps atau getServerSideProps apabila pengambilan data gagal. Ia melakukan perkara yang sama untuk API penghalaan yang lebih lama.

2. Lancarkan halaman 404 tersuai

Halaman ralat lalai membiarkan pengguna terkapar-kapar. Cipta app/not-found.js (App Router) atau pages/404.js (Pages Router) dengan pautan navigasi, kotak carian, atau cadangan kandungan berkaitan. Halaman 404 yang direka dengan baik akan mengekalkan pelawat di dalam laman web dan bukannya menghantar mereka terus keluar.

3. Bersihkan laluan yatim (orphaned routes)

Padam halaman statik yang tidak lagi mempunyai kegunaan. Jika fail masih ada tetapi kandungannya kosong, tambahkan respons notFound atau buang fail tersebut sepenuhnya. Audit berkala pada direktori pages atau app dapat menghalang URL yang tidak aktif daripada terlepas.

4. Tetapkan hala semula (301) kekal untuk kandungan yang dipindahkan

Apabila URL halaman berubah, hala semula 301 memberitahu pelayar dan bot bahawa sumber tersebut telah dipindahkan secara kekal. Tambahkan hala semula dalam next.config.js di bawah kunci redirects. Ini menghalang URL lama daripada mengembalikan status 200 tanpa kandungan.

5. Pantau dan bertindak atas amaran Search Console

Semak Google Search Console dengan kerap untuk mengesan soft 404. Gunakan perangkak (crawler) automatik untuk mendedahkan ralat baharu sebelum ia bertimbun. Anggap setiap amaran sebagai petunjuk untuk mengesahkan logik pengambilan data yang berkaitan.

Kesimpulan

Halaman yang mengembalikan 200 OK sambil tidak memberikan sebarang kandungan secara senyap menghabiskan nilai SEO. Dalam Next.js, laluan dinamik dan pengambilan data yang tidak disemak menjadikan soft 404 perkara biasa, tetapi anda boleh menghapuskannya. Gunakan notFound, bina 404 tersuai yang membantu, bersihkan laluan yatim, konfigurasikan hala semula 301, dan sentiasa berwaspada dalam Search Console untuk melindungi bajet merangkak, mengekalkan kedudukan (rankings), dan mengekalkan pelawat di dalam laman web.