404 Not Found
Penggunaan
Ketika error 404 Not Found diterima, status tersebut tidak menjelaskan apakah sumber daya itu tidak tersedia secara permanen, tidak tersedia sementara, atau tidak pernah ada sama sekali. Error ini paling sering berasal dari URL yang salah ketik dan kerap dijumpai oleh developer yang menangani sekumpulan sumber daya yang masih dalam pengerjaan.
Tautan ke alamat yang mengembalikan 404 Not Found umumnya dikenal sebagai dead link atau broken link. Status ini juga digunakan ketika server tidak bersedia mengakui bahwa suatu sumber daya ada.
Ketika server mengetahui bahwa sumber daya pernah ada di alamat yang ditentukan tetapi telah dihapus secara permanen, status 410 Gone lebih informatif.
Karena error ini begitu sering dilihat oleh pengguna akhir, banyak server menggunakan halaman error kustom yang deskriptif dan relevan bagi situs mereka.
Catatan
404 tidak berarti klien diblokir. Pemblokiran menghasilkan 403 Forbidden. Sebagian server mengembalikan 404 alih-alih 403 untuk menyembunyikan keberadaan sumber daya. 404 tidak menunjukkan sifat permanen. Sumber daya tersebut bisa saja muncul kemudian. Untuk penghapusan permanen, server mengembalikan 410 Gone.
Dampak SEO
Mesin pencari seperti Google tidak mengindeks URL yang mengembalikan status 404. URL yang sebelumnya terindeks namun kini mengembalikan kode status ini akan dihapus dari hasil pencarian. Halaman yang mengembalikan kode ini tidak memboroskan crawl budget. Google memperlakukan 404 dan 410 secara identik. Keduanya menghapus konten dari indeks dengan laju yang sama. Bingbot memperlakukan 404 sebagai sinyal penghapusan konten dan menghapus URL tersebut dari indeks setelah mengonfirmasi statusnya pada perayapan ulang berikutnya. Mengembalikan 200 berisi konten error alih-alih 404 yang semestinya akan menciptakan soft 404, yang memboroskan crawl budget dan mengikis kepercayaan terhadap sinyal server situs tersebut.
Contoh
Klien meminta sebuah sumber daya dan server merespons dengan 404 Not Found karena sumber daya tersebut tidak ada di alamat yang ditentukan.
Permintaan
GET /documents/secret-formula.pdf HTTP/1.1
Host: example.com
Respons
HTTP/1.1 404 Not Found
Content-Type: text/html
Content-Length: 216
<html>
<head>
<title>Resource Not Found</title>
</head>
<body>
<p>The requested resource was not found.
Check the spelling of the address.</p>
</body>
</html>
Cara memperbaiki
404 Not Found berarti tidak ada sumber daya yang tersedia di alamat yang diminta.
Periksa ejaan dan path URL. Salah ketik pada path, nama file, atau query string adalah penyebab paling umum. Teliti setiap segmen alamat dengan saksama. Salin path langsung dari tautan sumber alih-alih mengetiknya secara manual.
Perhatikan sensitivitas huruf besar-kecil. Server berbasis Linux memperlakukan /Page dan /page sebagai path yang berbeda. Samakan persis dengan huruf besar-kecil URL aslinya. Server IIS berbasis Windows secara bawaan tidak membedakan huruf besar-kecil, sehingga 404 pada IIS menunjukkan sumber daya yang memang benar-benar tidak ada.
Cermati tanda garis miring di akhir yang hilang. Sebagian server membedakan /path dan /path/. Tambahkan atau hapus garis miring di akhir lalu coba lagi. nginx dan Apache menangani garis miring di akhir secara berbeda tergantung konfigurasi try_files dan DirectorySlash.
Pastikan sumber daya memang ada di server. Verifikasi bahwa file atau rute tersebut sudah ter-deploy dan dapat diakses. Masuk ke server melalui SSH dan pastikan file ada di path document root yang diharapkan. Pada nginx, periksa direktif root atau alias di dalam blok location yang cocok. Pada Apache, periksa DocumentRoot di virtual host.
Siapkan redirect 301 atau 308 untuk konten yang dipindahkan. Ketika sebuah sumber daya berpindah ke alamat baru, alihkan URL lama untuk mencegah broken link. Pada nginx:
location = /old-path {
return 301 /new-path;
}
Pada Apache .htaccess:
Redirect 301 /old-path /new-path
Periksa aturan rewrite server. Tinjau aturan mod_rewrite di Apache atau blok try_files dan location di nginx. Rewrite yang salah konfigurasi akan membuang permintaan ke path yang valid tanpa pemberitahuan apa pun. Aktifkan logging rewrite untuk melacak evaluasi aturan. Pada Apache, setel LogLevel alert rewrite:trace3 untuk sementara.
Verifikasi tipe MIME dan pemetaan handler pada IIS. IIS mengembalikan 404.3 ketika sebuah ekstensi file tidak memiliki tipe MIME atau pemetaan handler yang terdaftar. Tambahkan tipe MIME yang hilang melalui IIS Manager atau lewat web.config:
<staticContent>
<mimeMap fileExtension=".json"
mimeType="application/json" />
</staticContent>
Periksa konfigurasi DNS dan virtual host. Domain yang menunjuk ke server yang salah atau entri virtual host yang hilang menyebabkan 404 pada semua path. Pastikan rekaman DNS A/CNAME mengarah ke IP server yang benar dan server memiliki direktif server_name (nginx) atau ServerName (Apache) yang cocok.
Audit broken link dengan crawler. Jalankan crawler situs untuk mendeteksi semua respons 404 di seluruh situs. Perbaiki tautan internal yang rusak dan kirimkan XML sitemap yang diperbarui ke mesin pencari untuk mempercepat pengindeksan ulang konten yang dipindahkan. Alat untuk menemukan broken link antara lain Google Search Console (laporan Coverage), Screaming Frog, Ahrefs Site Audit, atau wget —spider untuk pemeriksaan lewat baris perintah.
Referensi kode
.NET
HttpStatusCode.NotFound
Rust
http::StatusCode::NOT_FOUND
Rails
:not_found
Go
http.StatusNotFound
Symfony
Response::HTTP_NOT_FOUND
Python3.5+
http.HTTPStatus.NOT_FOUND
Java
java.net.HttpURLConnection.HTTP_NOT_FOUND
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_NOT_FOUND
Angular
@angular/common/http/HttpStatusCode.NotFound