(0275) 2974 127
Redirect pada website tidak hanya terdiri dari satu jenis. Dalam HTTP, redirect termasuk dalam kelompok status code 3xx, tetapi masing-masing kode memiliki arti dan perilaku yang berbeda. Perbedaan tersebut terutama berkaitan dengan apakah perpindahan URL bersifat permanen atau sementara serta bagaimana metode HTTP diperlakukan ketika request dialihkan.
301 Moved Permanently digunakan ketika resource telah dipindahkan secara permanen ke URL baru.
Contohnya:
https://example.com/artikel-lama
dialihkan secara permanen ke:
https://example.com/artikel-baru
Respons server dapat terlihat seperti:
HTTP/1.1 301 Moved Permanently
Location: https://example.com/artikel-baru
Menurut RFC 9110, status 301 menunjukkan bahwa resource target telah memiliki URI baru secara permanen. Server sebaiknya menyertakan header Location yang berisi URI tujuan.
Redirect 301 umum digunakan ketika:
Untuk mesin pencari, Google mendokumentasikan redirect permanen seperti 301 sebagai sinyal bahwa URL tujuan dapat menjadi URL kanonis pengganti URL lama.
Namun, 301 tidak selalu memiliki perilaku yang sama untuk setiap metode HTTP. Untuk alasan historis, user agent dapat mengubah metode POST menjadi GET pada request berikutnya. Jika metode request harus dipertahankan, status 308 dapat digunakan.
302 Found menunjukkan bahwa resource untuk sementara berada pada URL lain.
Contohnya:
https://example.com/produk
sementara diarahkan ke:
https://example.com/promo
Responsnya dapat berupa:
HTTP/1.1 302 Found
Location: https://example.com/promo
Menurut RFC 9110, status 302 menunjukkan bahwa resource target untuk sementara berada pada URI yang berbeda. Karena pengalihan tersebut dapat berubah, client sebaiknya tetap menggunakan URI awal untuk request berikutnya.
302 dapat digunakan untuk kebutuhan seperti:
Perlu diperhatikan bahwa 302 memiliki sejarah implementasi yang menyebabkan perilaku terhadap metode request tertentu tidak selalu sama. Secara khusus, user agent dapat mengubah metode POST menjadi GET. Jika metode request harus dipertahankan, status 307 Temporary Redirect lebih tepat.
303 See Other digunakan untuk mengarahkan client ke resource lain. Setelah menerima respons 303, client dapat mengambil resource yang ditunjukkan oleh Location menggunakan metode GET atau HEAD.
Contoh sederhananya:
HTTP/1.1 303 See Other
Location: https://example.com/hasil
RFC 9110 menjelaskan bahwa 303 dapat digunakan setelah suatu operasi, misalnya POST, ketika server ingin memberikan resource lain sebagai hasil atau representasi dari operasi tersebut. Client kemudian dapat mengambil resource pada URL Location dengan GET atau HEAD.
Salah satu penggunaan yang umum adalah pola:
POST /form
↓
303 See Other
↓
GET /hasil
Pola tersebut dapat membantu menghindari pengiriman ulang operasi POST ketika pengguna memuat ulang halaman hasil.
Dengan demikian, 303 memiliki karakteristik yang berbeda dari 307 dan 308 karena request berikutnya diarahkan sebagai permintaan pengambilan menggunakan GET atau HEAD.
307 Temporary Redirect memiliki fungsi yang mirip dengan 302, yaitu menunjukkan pengalihan sementara. Perbedaan pentingnya adalah metode request tidak boleh diubah ketika redirect otomatis dilakukan.
Metode dan body request digunakan kembali pada request yang dialihkan.
Misalnya:
POST /upload
↓
307 Temporary Redirect
↓
POST /upload-new
Metode POST tetap digunakan pada request berikutnya.
RFC 9110 secara eksplisit menyatakan bahwa user agent tidak boleh mengubah metode request ketika melakukan automatic redirection menggunakan 307.
Karena itu, 307 dapat digunakan ketika pengalihan bersifat sementara tetapi aplikasi tetap membutuhkan metode request yang sama.
| Aspek | 302 | 307 |
|---|---|---|
| Sifat | Sementara | Sementara |
| URL tujuan | Location |
Location |
| Metode request | Untuk alasan historis, POST dapat diubah menjadi GET |
Harus dipertahankan |
| Body request | Dapat tidak digunakan kembali jika metode berubah | Digunakan kembali pada redirect otomatis |
| Cocok untuk request non-GET | Perlu memperhatikan perilaku metode | Lebih jelas karena metode tidak boleh berubah |
Perbedaan ini penting terutama pada aplikasi yang menggunakan metode seperti POST, PUT, atau metode HTTP lain selain GET.
308 Permanent Redirect menunjukkan bahwa resource telah dipindahkan secara permanen, dengan karakteristik utama bahwa metode request tidak boleh diubah ketika redirect otomatis dilakukan.
Body request juga digunakan kembali dalam redirect otomatis.
Contohnya:
HTTP/1.1 308 Permanent Redirect
Location: https://example.com/tujuan-baru
Jika request awal menggunakan POST, request yang mengikuti redirect 308 tetap menggunakan POST.
POST /alamat-lama
↓
308 Permanent Redirect
↓
POST /alamat-baru
Hal tersebut membuat 308 berbeda dari 301. Keduanya menunjukkan pengalihan permanen, tetapi 308 memberikan aturan yang lebih tegas mengenai pemeliharaan metode request.
Status 308 dapat digunakan ketika URL berubah secara permanen tetapi aplikasi perlu memastikan metode request tetap sama.
Agar lebih mudah dipahami, perbedaan utamanya dapat diringkas sebagai berikut:
| Status | Jenis | Sifat | Metode request |
|---|---|---|---|
| 301 | Moved Permanently | Permanen | Untuk alasan historis, POST dapat berubah menjadi GET |
| 302 | Found | Sementara | Untuk alasan historis, POST dapat berubah menjadi GET |
| 303 | See Other | Pengalihan ke resource lain | Request pengambilan menggunakan GET atau HEAD |
| 307 | Temporary Redirect | Sementara | Harus dipertahankan |
| 308 | Permanent Redirect | Permanen | Harus dipertahankan |
Perbedaan tersebut berasal dari semantik HTTP yang ditetapkan dalam RFC 9110. Khususnya, 307 dan 308 dibuat untuk menghilangkan ambiguitas mengenai perubahan metode request yang dapat terjadi pada 301 dan 302.
Tidak semua status 3xx memiliki fungsi yang sama dengan redirect URL yang biasanya ditemui ketika membuka website.
Status 300 Multiple Choices menunjukkan bahwa terdapat lebih dari satu representasi atau pilihan yang dapat digunakan untuk memenuhi request. Server dapat memberikan informasi mengenai beberapa pilihan kepada client.
Status 300 relatif jarang digunakan dalam praktik dibandingkan kode redirect yang lebih umum seperti 301 dan 302.
Sementara itu, 304 Not Modified berkaitan dengan HTTP caching, bukan pengalihan pengguna ke URL baru.
Ketika browser atau client melakukan conditional request dan resource belum berubah, server dapat memberikan 304 sehingga client dapat menggunakan versi yang sudah tersimpan di cache.
Jadi, meskipun 304 berada dalam kelompok 3xx, status ini tidak seharusnya dipahami sebagai redirect URL seperti 301 atau 302.
LocationRedirect HTTP yang mengarahkan client ke URI lain umumnya menggunakan header HTTP bernama Location.
Contohnya:
HTTP/1.1 301 Moved Permanently
Location: https://example.com/halaman-baru
Header Location menunjukkan URI yang menjadi tujuan redirect.
URI tersebut dapat ditulis dalam bentuk absolut maupun relatif, misalnya:
Location: https://example.com/halaman-baru
atau:
Location: /halaman-baru
Keduanya merupakan bentuk yang didukung oleh HTTP.
Browser kemudian dapat mengikuti URI tersebut berdasarkan status redirect yang diterimanya.
Pemilihan redirect sebaiknya didasarkan pada tujuan pengalihan, bukan sekadar memilih kode yang paling sering digunakan.
Secara umum:
GET atau HEAD.Dengan memahami perbedaan tersebut, pemilik website dapat menghindari penggunaan status redirect secara sembarangan, terutama pada website yang memiliki formulir, transaksi, API, atau proses yang menggunakan metode HTTP selain GET.
Kode redirect yang sering dibahas dalam pengelolaan website adalah 301, 302, 303, 307, dan 308. Perbedaannya tidak hanya terletak pada permanen atau sementaranya perpindahan URL, tetapi juga pada bagaimana browser atau client menangani metode request.
Untuk kebutuhan pengelolaan URL website secara umum, 301 biasanya berkaitan dengan perpindahan permanen, sedangkan 302 digunakan untuk perpindahan sementara. Sementara itu, 307 dan 308 memberikan aturan yang lebih tegas agar metode request tetap dipertahankan.
Pemahaman mengenai jenis-jenis redirect ini menjadi dasar sebelum membahas penyebab website melakukan redirect, yang akan dibahas pada Bagian berikutnya.
Ingin mempelajari lebih banyak seputar web development, cloud computing, keamanan siber, server, hingga berbagai tren teknologi terbaru? Kunjungi blog Hosteko untuk mendapatkan artikel yang informatif, mudah dipahami, dan selalu diperbarui mengikuti perkembangan dunia digital.
Jangan lewatkan berbagai panduan, tips, serta tutorial yang dapat membantu Anda mengembangkan website, meningkatkan performa bisnis online, dan memperluas wawasan di bidang teknologi. Temukan artikel menarik lainnya hanya di Hosteko Blog dan terus ikuti informasi terbaru untuk mendukung perjalanan digital Anda.
Dalam bisnis, mendapatkan calon pelanggan hanyalah awal dari proses penjualan. Setelah seseorang menunjukkan ketertarikan terhadap…
Ketika sebuah aplikasi web semakin besar, kode program dapat menjadi sulit dikelola jika seluruh fungsi…
Ketika pengguna mengetik atau mengeklik sebuah URL, browser tidak selalu langsung mendapatkan halaman yang ingin…
WordPress dikenal sebagai Content Management System (CMS) yang fleksibel karena dapat dikembangkan dengan berbagai plugin.…
Saat mengunjungi sebuah website, pengguna terkadang memasukkan atau mengeklik satu URL tetapi kemudian browser membuka…
Gambar menjadi salah satu elemen penting dalam sebuah website. Selain membuat artikel lebih menarik, gambar…