Apakah menempatkan HTML dari halaman redirect 301 ke dalam dokumen akan menjalankan fungsi yang sama dengan redirect 301 sebenarnya?

15

Di web debugger, html halaman redirect 301 muncul sebagai:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.website.com/webpage.htm">here</a>.</p>
</body></html>

Saya harus mengarahkan ulang halaman html tanpa dukungan server. Jika saya mengganti halaman html dengan kode di atas, apakah itu akan berfungsi sama dengan menulis pengalihan 301 di .htaccess pada apache? Saya mencari ini di google, tetapi situs-situs yang berbicara tentang pengalihan 301 tidak mencakup opsi ini untuk mengarahkan ulang halaman html.

JMC
sumber

Jawaban:

18

Idealnya Anda akan mengirim kode status respons HTTP 301. Jika Anda tidak dapat melakukan itu meta refresh yang langsung juga akan berfungsi dan dihitung sebagai pengalihan 301 atau 302 tergantung pada mesin pencari .

<meta http-equiv="refresh" content="0;url=http://example.com/new.html">

Kecepatan refresh harus nol agar dianggap sebagai pengalihan 30x.

John Conde
sumber
Terima kasih, artikel itu mengartikulasikan proses dengan sangat baik. 0 penundaan pembaruan meta di dalam contoh html saya di atas = orang miskin 301.
JMC
10

Tidak, hanya mengganti HTML dengan contoh Anda tidak akan mencapai efek yang Anda cari. Ini hanya akan menunjukkan halaman itu kepada pengguna, karena Apache akan mengirim kode status '200' bersama dengan itu. Pengguna akan dapat mengklik tautan untuk menemukan halaman tetapi itu tidak akan terjadi secara otomatis dan spider tidak akan tahu bahwa Anda bermaksud melakukan pengalihan permanen sumber daya.

Anda harus menggunakan arahan Redirect atau _mod_rewrite_ yang tepat di file .htaccess atau conf conf Apache Anda .

Atau, jika Anda benar-benar menggunakan PHP atau yang serupa, Anda dapat mengatur kode kembali ke 301, mengeluarkan tajuk respons Lokasi dan kemudian solusi berbasis halaman Anda akan berfungsi. Dalam PHP akan terlihat seperti ini:

<?php
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: http://www.new-url.com" );
Hissohathair
sumber
+1 Poin bagus tentang 200 kode status. Tidak memikirkan itu. Sayangnya ini adalah server IIS dan saya tidak memiliki akses lebih dalam dari ftp. Halaman-halamannya adalah .html sehingga pengalihan asp tidak akan diproses.
JMC
Dalam hal ini jawaban John Conde adalah yang terbaik - saya lupa tentang meta refresh equivalence.
Hissohathair
3

Setuju dengan Hissohathair karena pendekatan Anda tidak akan benar-benar mengarahkan. Pengguna mungkin tahu untuk mengklik tautan, tetapi halaman asli masih akan mengembalikan kode status '200' yang normal dan terus muncul di hasil pencarian (mungkin tidak seperti yang Anda inginkan).

Untuk mempertahankan peringkat halaman, 301 kode status sangat penting. Menambahkan tag refresh meta juga merupakan opsi yang baik dan mungkin membantu dalam kebanyakan kasus (sesuai dengan tanggapan John), tetapi Anda mungkin tidak dijamin bahwa mesin pencari akan menerimanya sebagai pengalihan 301 di masa mendatang. Menambahkan pengalihan yang tepat ke .htaccess Anda (atau file conf Apache) akan menjadi pilihan terbaik Anda untuk menjamin kode status 301 sedang dikirim.

Edit:

=======================

Untuk situs web IIS7, selama modul Penulisan Ulang URL IIS diinstal, Anda dapat membuat aturan pengalihan di web.config untuk situs tersebut. Aturan-aturan ini akan berlaku untuk file .html juga. Info lebih lanjut di sini:

http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module/

=======================

Alternatif lain jika host web Anda tidak memiliki kemampuan .htaccess / mod_rewrite mungkin untuk mengubah host web yang Anda gunakan di mana Anda dapat mengatur pengalihan sisi server. Selama situs tersebut dipindahkan dengan benar, itu harus cukup mulus bagi pengguna Anda. Pendekatan ini hanya untuk kasus-kasus ekstrem jika mempertahankan peringkat halaman sangat penting.

rampok
sumber