Apakah klien seharusnya berperilaku berbeda? Bagaimana?
Apakah klien seharusnya berperilaku berbeda? Bagaimana?
Jawaban:
Status 301 berarti sumber daya (halaman) dipindahkan secara permanen ke lokasi baru. Klien / browser tidak boleh mencoba untuk meminta lokasi asli tetapi menggunakan lokasi baru mulai sekarang.
Status 302 berarti sumber daya untuk sementara berada di tempat lain, dan klien / browser harus terus meminta url asli.
Ketika spider mesin pencari menemukan 301 kode status di header respons halaman web, ia memahami bahwa halaman web ini tidak ada lagi, ia mencari header lokasi sebagai respons memilih URL baru dan mengganti URL yang diindeks dengan URL baru dan juga mentransfer pagerank .
Jadi mesin pencari me-refresh semua URL yang diindeks yang tidak lagi ada (301 ditemukan) dengan URL baru, ini akan mempertahankan lalu lintas halaman web lama Anda, pagerank dan mengalihkannya ke yang baru (Anda tidak akan kehilangan lalu lintas halaman web lama Anda).
Browser: jika browser menemukan 301 kode status maka cache cache pemetaan lama dengan URL baru, klien / browser tidak akan mencoba untuk meminta lokasi asli tetapi menggunakan lokasi baru mulai sekarang kecuali cache dihapus.
Ketika spider mesin pencari menemukan 302 status untuk halaman web, itu hanya akan mengarahkan sementara ke lokasi baru dan merayapi kedua halaman. URL halaman web yang lama masih ada di database mesin pencari dan selalu berusaha untuk meminta lokasi lama dan merayapnya. Klien / browser masih akan mencoba untuk meminta lokasi asli.
Baca lebih lanjut tentang cara menerapkannya di asp.net c # dan apa dampaknya pada mesin pencari - http://www.dotnetbull.com/2013/08/301-permanent-vs-302-tentara-stentar-status-code-aspnet -csharp-Implementation.html
Sebagian besar 301 vs 302 penting untuk pengindeksan di mesin pencari, karena crawler mereka memperhitungkan ini dan mentransfer PageRank saat menggunakan 301.
Lihat jawaban Peter Lee untuk lebih jelasnya.
301 adalah sumber daya yang diminta telah diberi URI permanen baru dan setiap referensi di masa mendatang untuk sumber daya ini harus dilakukan dengan menggunakan salah satu URI yang dikembalikan.
302 adalah bahwa sumber daya yang diminta tinggal sementara di bawah URI yang berbeda.
Karena pengalihan dapat diubah pada kesempatan, klien harus terus menggunakan Request-URI untuk permintaan di masa mendatang.
Respons ini hanya dapat ditutup jika ditunjukkan oleh bidang header Kontrol-Cache atau Kedaluwarsa.
<?php header("location: http://example.com/new.php"); ?>
dan file new.php - <?php echo 'I am new'; ?>
dan buka tautan . Akan ada arahan ulang dan menampilkan teks "Saya baru". Kemudian ganti kode di old.php ke <?php echo 'I am old'; ?>
dan juga pergi ke tautan . Anda akan melihat teks "Saya sudah tua". Jika Anda telah melakukan redirect 301 di old.php, Anda akan melihat teks "Saya baru" bahkan setelah perubahan dalam kode old.php.
webcomic.com/latest
dan pengalihan ke webcomic.com/some-comic-title
dengan 301 browser akan selalu mengarahkan ke "some-comic-title". Bahkan ketika komik berikutnya telah diterbitkan dan "terbaru" sekarang dialihkan ke "komik-judul lain" ... Di sinilah 302 akan lebih baik.
301 redirect di-cache tanpa batas (setidaknya oleh beberapa browser).
Ini berarti, jika Anda menyiapkan 301, kunjungi halaman itu, Anda tidak hanya diarahkan, tetapi pengalihan juga di-cache.
Ketika Anda mengunjungi halaman itu lagi, Browser Anda * bahkan tidak perlu meminta URL itu, itu hanya pergi ke target pengalihan cache.
Satu-satunya cara untuk membatalkan 301 bagi pengunjung dengan pengalihan di Cache, adalah mengarahkan ulang kembali ke URL asli **. Dalam hal ini, Browser akan melihat loop, dan akhirnya benar-benar meminta URL yang dimasukkan.
Jelas, itu bukan pilihan jika Anda memutuskan untuk mengakses Facebook atau sumber daya lain yang tidak sepenuhnya Anda kendalikan.
Sayangnya, banyak Penyedia Hosting menawarkan fitur di Antarmuka Admin mereka hanya disebut "Redirection", yang melakukan pengalihan 301. Jika Anda menggunakan ini untuk mengarahkan sementara domain Anda ke Facebook sebagai halaman yang akan datang, Anda pada dasarnya kacau.
* setidaknya Chrome dan Firefox, menurut Berapa lama browser melakukan cache HTTP 301s?. Baru saja mencobanya dengan Chrome 45. Edit: Safari 7.0.6 di Mac juga cache, restart browser tidak membantu (Link mengatakan bahwa pada Safari 5 pada Windows itu membantu.)
** Saya mencoba javascript window.location = ''
, karena itu akan menjadi solusi yang dapat diterapkan dalam banyak kasus - tidak berfungsi. Ini menghasilkan Loop tak terbatas yang tidak terdeteksi. Namun, php header('Location: new.url')
tidak memutus perulangan
Intinya: hanya gunakan 301s jika Anda benar-benar yakin Anda tidak akan pernah menggunakan URL itu lagi. Biasanya tidak pernah di direktori root (example.com/)
Masalah utama dengan 301 adalah browser akan melakukan cache pengalihan bahkan jika Anda menonaktifkan pengalihan dari tingkat server.
Itu selalu lebih baik untuk menggunakan 302 jika Anda mengaktifkan pengalihan untuk jendela pemeliharaan pendek.