Panduan Pengalihan Meta Refresh

Apa itu pengalihan meta refresh, posisi mekanisme ini di antara pengalihan sisi server dan JavaScript dalam urutan preferensi Google, perbedaan refresh instan dan tertunda, serta alasan mekanisme ini tidak dianjurkan.

Pertama kali diterbitkan: 28 Jun 2026 · Terakhir diperbarui: 21 Agu 2026 · Advanced
Bahasa

Pengalihan meta refresh adalah tag HTML <meta http-equiv="refresh"> atau header HTTP Refresh yang setara, bukan kode status HTTP. Server mengembalikan respons 200 biasa, lalu browser menjalankan pengalihan setelah halaman dianggap selesai dimuat; ketergantungan inilah yang membuatnya lebih lemah daripada pengalihan sisi server. Google menafsirkan versi instan dengan content="0" sebagai pengalihan permanen dan versi tertunda sebagai pengalihan sementara. Gunakan mekanisme ini hanya sebagai pilihan terakhir ketika akses server benar-benar tidak tersedia, pilih versi tanpa penundaan, lalu ganti dengan pengalihan 301 sisi server begitu memungkinkan.

TL;DR — sebuah meta refresh adalah sebuah HTML <meta http-equiv="refresh"> tag (atau yang disisipkan server Refresh header), bukan sebuah 3xx kode status — server mengembalikan 200 dan browser melakukan navigasi hanya setelah halaman memiliki selesai dimuat. instan (content="0") dibaca sebagai permanen untuk Google, seperti 301/308; tertunda (> 0) dibaca sebagai sementara. ini berada di antara server-side dan JavaScript pengalihan di Google’s keandalan urutan karena itu ketergantungan pada pemuatan halaman penuh. Mueller: ini “seharusnya just berfungsi,” (terjemahan) “seharusnya hanya berfungsi,” tetapi isn’t dianjurkan (back-button riwayat + mengurai-time cost). gunakan ini hanya ketika Anda genuinely tidak memiliki akses server, utamakan 0, pasangkan ini dengan rel=canonical dan sebuah tautan cadangan yang terlihat, dan ganti ini dengan sebuah nyata 301 segera setelah Anda dapat.

Evidence for this claim Google supports instant and delayed meta refresh redirects but recommends server-side permanent redirects when possible. Scope: Google redirect processing and implementation preference. Confidence: high · Verified: Google Search Central: Redirects Evidence for this claim Timed redirects can create accessibility problems, particularly when users cannot control the time limit. Scope: WCAG timing guidance; not a search-ranking claim. Confidence: high · Verified: W3C WCAG: Timing Adjustable

Ini bukan kode status

Ini satu hal yang harus dipahami dengan benar. sebuah meta refresh adalah bukan sebuah HTTP 3xx respons. server mengembalikan sebuah biasa 200 OK dengan sebuah halaman lengkap isi; berada di itu halaman’s <head> adalah sebuah HTML arahan itu browser bertindak pada setelah halaman memuat:

<!-- Instant: treated by Google as permanent -->
<meta http-equiv="refresh" content="0;url=https://example.com/newlocation">

Ada padanan sisi server — Refresh header HTTP — yang mana melakukan yang sama hal tetapi adalah disisipkan oleh server kode alih-alih berada di markup:

HTTP/1.1 200 OK
Refresh: 0; url=https://www.example.com/newlocation

Perhatikan bahwa bahkan header versi mengembalikan 200, bukan sebuah 3xx. Dalam kedua cara tersebut, ini adalah sebuah client-side pengalihan: browser performs navigasi, bukan server.

instan vs. tertunda — pembagian Google

Google membedakannya berdasarkan jumlah detik. Dalam pengalihan dan Google Search dokumentasi ini menyatakan bahwa ini “differentiates between two kinds of meta refresh redirects” (terjemahan) “differentiates antara dua jenis dari meta refresh pengalihan”:

  • instan (content="0") — “Triggers as soon as the page is loaded… Google Search interprets instant meta refresh redirects as permanent redirects.” (terjemahan) “dipicu segera setelah halaman adalah dimuat… Google penelusuran menafsirkan instan meta refresh pengalihan sebagai permanen pengalihan.” karena itu untuk kanonisasi ini adalah dalam kelompok yang sama dengan sebuah 301/308: Google mengikuti ini dan menggunakan ini sebagai sebuah sinyal itu target seharusnya menjadi kanonis.
  • tertunda (content lebih besar daripada 0) — “Triggers only after an arbitrary number of seconds… Google Search interprets delayed meta refresh redirects as temporary redirects.” (terjemahan) “dipicu hanya setelah sebuah sebarang angka dari detik… Google penelusuran menafsirkan tertunda meta refresh pengalihan sebagai sementara pengalihan.” seperti sebuah 302/303/307, target mungkin masih menjadi terindeks via lainnya sinyal, tetapi pengalihan sendiri isn’t dianggap sebagai sebuah permanen-perpindahan sinyal.

saya sendiri pengalihan urutan di Ahrefs panduan untuk 11 jenis dari redirects mencerminkan hal ini: untuk permanen perpindahan I peringkat them 308 / 301 → meta refresh 0 → JavaScript → crypto, dan tertunda meta refresh drops untuk sementara tier bersama 302/303/307.

Posisinya dalam urutan preferensi Google

Google’s pengalihan dokumentasi secara harfiah menerbitkan sebuah preferensi tabel, “ordered by how likely Google is able to interpret [the redirect] correctly.” (terjemahan) “diurutkan oleh bagaimana mungkin Google adalah mampu untuk interpret [ pengalihan] dengan benar.” untuk permanen pengalihan urutan adalah: HTTP 301HTTP 308meta refresh (0 seconds)JavaScript location → crypto. Meta refresh adalah tingkat menengah — di bawah server-side, di atas JavaScript.

Google menjelaskannya secara tegas tentang kedua batas. pada batas atas: “If server-side redirects aren’t possible to implement on your platform, meta refresh redirects may be a viable alternative.” (terjemahan) “jika server-side pengalihan aren’t mungkin untuk menerapkan pada Anda platform, meta refresh pengalihan dapat menjadi sebuah layak alternatif.” pada batas bawah: “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (terjemahan) “hanya gunakan JavaScript pengalihan jika Anda dapat’t melakukan server-side atau meta refresh pengalihan.” itu’s seluruh urutan itu dalam dua kalimat — dan ini sesuai rumusan sudah di pengalihan hub, yang mana mencatat itu JS dan tertunda meta-refresh adalah lebih lemah karena mereka depend pada perenderan.

Dua urutan berbeda — jangan mencampuradukkannya

Ada perbedaan halus yang sering membingungkan pengembang. MDN menerbitkan sebuah urutan berbeda untuk pengalihan — tetapi ini adalah tentang urutan eksekusi browser ketika several pengalihan mekanisme adalah dipasang pada satu halaman, bukan keandalan SEO. MDN’s urutan adalah: HTTP pengalihan pertama, lalu JavaScript, lalu meta refresh terakhir — karena “the <meta> redirect happens after the page is completely loaded, which is after all scripts have executed.” (terjemahan) “ meta refresh pengalihan terjadi setelah halaman adalah selesai dimuat, yang mana adalah setelah semua skrip memiliki dijalankan.”

karena itu JavaScript “beats” (terjemahan) “beats” meta refresh di MDN’s waktu urutan, tetapi meta refresh “beats” (terjemahan) “beats” JavaScript di Google’s keandalan urutan. Keduanya benar — mereka jawaban berbeda pertanyaan. MDN adalah asking “which fires first in the browser?” (terjemahan) “yang mana dijalankan pertama di browser?” (synchronous JS berjalan selama muat, sebelum meta refresh’s post-muat pengatur waktu). Google adalah asking “which am I most likely to interpret correctly for search?” (terjemahan) “yang mana am I sebagian besar mungkin untuk interpret dengan benar untuk penelusuran?” (sebuah meta refresh adalah dibaca langsung dari diurai HTML; sebuah JS pengalihan perlu Google’s terpisah perenderan langkah untuk berhasil). Pisahkan kedua sudut pandang tersebut dan kontradiksi yang tampak disappears.

Mengapa ini bergantung pada pemuatan halaman — dan mengapa itu membuatnya lebih lemah

sebuah meta refresh dapat’t dijalankan until halaman memiliki selesai dimuat. Per MDN’s <meta http-equiv> reference, “the timer starts when the page is completely loaded, which is after the load and pageshow events have both fired.” (terjemahan) “ pengatur waktu dimulai ketika halaman adalah selesai dimuat, yang mana adalah setelah meta refresh dan meta refresh peristiwa memiliki keduanya fired.” itu’s benar bahkan untuk content="0" — “instan” (terjemahan) “instan” berarti tanpa penundaan tambahan setelah muat, bukan zero elapsed time. sebuah slow halaman delays bahkan sebuah 0-kedua refresh di sebuah cara sebuah server-side 3xx tidak pernah dapat, karena server mengirim pengalihan sebelum apa pun halaman memuat di semua.

layak menjadi precise: sebuah meta refresh adalah bukan diproses di Google’s render (JS eksekusi) stage cara sebuah window.location pengalihan adalah — ini adalah dibaca directly dari diurai HTML <head>. -nya weakness isn’t perenderan pipeline; ini adalah ketergantungan pada pemuatan halaman penuh (network completion, render-blocking resources) plus, untuk tertunda variants, sebuah sebarang menunggu.

apa HTML standar sebenarnya specifies

HTML Standard’s declarative-refresh algoritme adalah lebih precise daripada “waits for the halaman to pemuatan,” (terjemahan) “waits untuk halaman untuk muat,” dan sebuah beberapa dari -nya detail penting untuk auditing dan troubleshooting:

  • jatuh tempo time. refresh bebergantung jatuh tempo setelah document’s sepenuhnya-dimuat time dan, untuk sebuah <meta> element specifically, -nya penyisipan time — whichever adalah later — disesuaikan untuk pengguna preferensi. itu’s spec-tingkat versi dari “setelah the halaman loads” (terjemahan) “setelah halaman memuat”; persis yang mana network/render peristiwa count sebagai “dimuat” (terjemahan) “dimuat” di sebuah given browser adalah sebuah implementation detail, bukan sesuatu standar itemizes sebagai sebuah universal fetch-dan-paint sequence.
  • relatif URLs. refresh target adalah diurai relatif untuk document’s sendiri URL, karena itu ketika Anda’re auditing satu, resolve absolute destination alih-alih trusting literal url= string — sebuah relatif path dapat poin tempat lain lainnya daripada ini looks seperti di sebuah glance.
  • pertama satu wins. setelah sebuah document adalah sudah marked untuk declaratively refresh, algoritme ignores apa pun later refresh instruksi pada itu halaman. dua conflicting <meta refresh> tags (atau sebuah tag plus sebuah Refresh header) isn’t sebuah fallback plan — ini adalah sebuah authoring defect, dan hanya pertama satu takes effect.
  • javascript: targets adalah rejected. jika diurai target menggunakan javascript: scheme, algoritme mengembalikan tanpa navigating.
  • ini isn’t dijamin untuk dijalankan. standar explicitly allows navigasi untuk menjadi dibatalkan, disesuaikan oleh pengguna atau pengguna-agent preferensi, diblokir oleh sebuah sandboxed document’s otomatis-fitur restriction, exposed melalui browser’s sendiri UI, atau simply bukan performed. Don’t treat “ini’ll pengalihan” (terjemahan) “ini’ll pengalihan” sebagai sebuah absolute.
  • riwayat penanganan. standar specifies ganti riwayat penanganan untuk refresh navigasi — meaning spec text memiliki browser ganti saat ini riwayat entry alih-alih tambahkan sebuah baru satu. itu’s layak flagging terhadap “mempertahankan the lama halaman in browser riwayat” (terjemahan) “mempertahankan halaman lama di browser riwayat” rumusan di bawah: ini adalah apa sebuah named Google spokesperson dilaporkan tentang dunia nyata perilaku di 2018, dan ini dapat masih hold di practice, tetapi ini isn’t apa saat ini spec text sendiri describes. Treat “meta refresh always leaves the source page in history” (terjemahan) «meta refresh selalu meninggalkan halaman sumber dalam riwayat» sebagai anggapan yang belum dikonfirmasi, bukan perilaku yang sudah pasti. alih-alih settled perilaku — verifying ini akan take browser/versi-spesifik testing, yang mana adalah di luar apa ini sources establish.
Evidence for this claim The HTML Standard's declarative refresh algorithm returns without navigating when the parsed target uses the javascript scheme. Scope: meta refresh and Refresh header processing Confidence: high · Verified: HTML Standard: Refresh state

John Mueller put “mengapa bukan dianjurkan” (terjemahan) “mengapa bukan dianjurkan” case concisely (relayed oleh mesin pencari Roundtable, 2018): sebuah meta refresh “should just work,” (terjemahan) “seharusnya hanya berfungsi,” tetapi Google doesn’t recommend ini untuk dua alasan — UX (“it keeps the page in browser history, afaik” (terjemahan) «mekanisme ini mempertahankan halaman dalam riwayat browser, sejauh yang saya tahu»—sebuah pernyataan yang sengaja disampaikan dengan keraguan. dan processing time (Google memiliki untuk mengurai halaman untuk bahkan melihat pengalihan). “Once processed, it’s just like a redirect.” (terjemahan) “setelah diproses, ini adalah hanya seperti pengalihan.” itu’s sebuah lebih berguna explanation daripada usual “ini’s lama dan berbau spam,” (terjemahan) “ini adalah lama dan berbau spam,” karena ini names concrete, non-spam costs — bahkan jika riwayat half adalah sebuah dilaporkan pengamatan alih-alih sebuah didokumentasikan spec guarantee (melihat di atas).

mengapa ini adalah tidak dianjurkan — historical baggage

terpisah dari Mueller’s UX/mengurai-time alasan, meta refresh carries sebuah reputasi. di 2000s web-spam era ini adalah sebuah umum doorway-halaman vehicle: sebuah halaman peringkat untuk sebuah kueri, lalu near-instantly meta-refreshes pengunjung untuk sebuah berbeda, lebih sedikit relevant destination — showing mesin pencari dan pengguna effectively berbeda outbergantung. itu’s origin dari “berbau spam” (terjemahan) “berbau spam” label. ini adalah layak menjadi accurate di sini: tidak saat ini Google spam-policy halaman names “meta refresh” (terjemahan) “meta refresh” explicitly; policies define “sneaky pengalihan” (terjemahan) “sneaky pengalihan” dan “doorway” (terjemahan) “doorway” abuse sebagai umum categories itu meta refresh dahulu disajikan sebagai sebuah mekanisme untuk. Treat ini sebagai historical/industri context, bukan sebuah tegas saat ini policy citation.

There’s juga sebuah concrete, non-spam kegagalan modus Mueller ditandai di sebuah 2018 hangout (via mesin pencari Journal): sebuah situs itu meta-refreshed listing halaman untuk sebuah shared pembayaran halaman. “So if you do this across your pages there’s a big chance we’ll follow this redirect and think ‘Oh, this payment page is actually what you want to have indexed and not the actual content.’” (terjemahan) “karena itu jika Anda melakukan ini di seluruh Anda halaman there’s sebuah big peluang kami’ll ikuti ini pengalihan dan think ‘Oh, ini pembayaran halaman adalah sebenarnya apa Anda ingin memiliki terindeks dan bukan sebenarnya konten.’” Mass-refreshing banyak sumber halaman untuk satu generic destination dapat mendapatkan destination terindeks alih-alih Anda konten.

None dari itu membuat sebuah isolated, legitimate meta refresh sebuah penalty risk. Google’s sendiri saat ini dokumentasi panggil ini “a viable alternative” (terjemahan) “sebuah layak alternatif” ketika server-side pengalihan aren’t mungkin. risk adalah pola dan intent, bukan mekanisme.

Evidence for this claim Google says meta refresh can be a viable alternative when server-side redirects are not possible, while permanent server-side redirects are recommended whenever possible for a URL move. Scope: meta refresh and HTTP Refresh interpretation Confidence: high · Verified: Redirects and Google Search

aksesibilitas: yang sama instan-vs-tertunda pembagian

SEO rumusan memiliki sebuah hampir persis twin di aksesibilitas panduan — dengan satu qualification layak menyatakan sejak awal: W3C’s WAI techniques adalah, di mereka sendiri kata, contoh dari cara untuk memenuhi WCAG keberhasilan kriteria, bukan wajib kepatuhan aturan. Meeting atau missing sebuah spesifik teknik isn’t sendiri sebuah otomatis lulus atau gagal; sebenarnya requirement adalah keberhasilan kriteria (di sini, 2.2.1 waktu Adjustable). dengan itu menyatakan, W3C’s sendiri preferensi sesuai SEO panduan di atas: ini recommends sebuah server-side pengalihan pertama, dan di mana sebuah client-side pengalihan adalah genuinely necessary, -nya memadai teknik (H76, G110) panggil untuk tidak penundaan (content="0") dan sebuah sumber halaman whose konten adalah limited untuk pengalihan-related informasi plus sebuah terlihat tautan untuk destination. itu’s sebuah narrower bar daripada “apa pun 0-detik refresh secara otomatis lulus” (terjemahan) “apa pun 0-kedua refresh secara otomatis lulus” — ini adalah “zero penundaan, pengalihan-hanya konten, dan a fallback link” (terjemahan) “zero penundaan, pengalihan-hanya konten, dan sebuah fallback tautan” sebagai didokumentasikan memadai pola. sebuah tertunda meta refresh dengan tidak cara untuk pause, extend, atau disable ini risks failing 2.2.1, karena ini dapat melakukan navigasi away sebelum sebuah screen-reader pengguna atau seseorang dengan rendah vision memiliki selesai membaca — tetapi apakah sebuah spesifik tertunda refresh sebenarnya fails kriteria adalah sebuah case-oleh-case WCAG evaluation, bukan sesuatu sebuah teknik angka alone settles. MDN’s aksesibilitas note describes yang sama underlying risk: too-pendek refresh intervals berarti orang menggunakan assistive tech “may be unable to read through and understand the page’s content before being secara otomatis redirected.” (terjemahan) “dapat menjadi unable untuk dibaca melalui dan memahami halaman’s konten sebelum menjadi secara otomatis redirected.”

karena itu keduanya sebuah mesin pencari dan sebuah standards isi land pada yang sama aturan: instan adalah baik, tertunda adalah risky. itu’s sebuah baik bit dari reinforcement — dan satu lebih alasan untuk utamakan content="0" jika Anda gunakan meta refresh sama sekali.

ketika ini adalah sebuah legitimate pilihan terakhir

gunakan meta refresh hanya ketika Anda genuinely dapat’t melakukan sebuah server-side pengalihan. nyata cases di mana itu terjadi:

  • statis hosts dengan tidak server config — e.g. GitHub halaman, di mana Anda dapat’t tambahkan .htaccess/nginx aturan.
  • statis-situs generators whose “aliases” (terjemahan) “aliases” fitur outputs meta refresh, bukan 301s. Hugo adalah sebuah known contoh — -nya aliases: front-penting generates little meta-refresh HTML files, bukan nyata server pengalihan. (lebih pada itu di Hugo SEO.)
  • tidak-kode / situs web-builder exports dan beberapa doc generators itu hanya let Anda emit statis HTML.

jika Anda’re stuck dengan ini, melakukan ini well:

  • utamakan instan (content="0") di atas apa pun penundaan — permanen sinyal, dan ini clears aksesibilitas bar.
  • Pair ini dengan rel="canonical" pointing di destination, karena itu kanonisasi intent adalah tegas bahkan sebelum Google processes refresh.
  • sertakan sebuah terlihat, clickable fallback tautan di isi untuk rare browser atau assistive-tech setting di mana auto-refresh adalah disabled.
  • Don’t stack ini ke sebuah rantai pengalihan — jika meta-refresh halaman’s URL later juga mendapatkan sebuah server-side pengalihan layered pada, Anda’ve dibangun sebuah chain (melihat rantai pengalihan).
  • ganti ini dengan sebuah nyata 301 moment Anda memiliki akses server. Meta refresh adalah sebuah bridge, bukan sebuah destination.

Detecting meta refresh di situs Anda

perayap surface ini, biasanya sebagai sebuah rendah-untuk-medium severity flag alih-alih sebuah critical error — Screaming Frog, Sitebulb, Ahrefs situs audit, dan Semrush semua report them. untuk sebuah isolated handful dari URLs ini adalah sebuah “fix ketika convenient” (terjemahan) “fix ketika convenient” item, bukan sebuah emergency; situs-wide gunakan pada penting halaman adalah di mana ini bebergantung layak prioritizing. untuk periksa sebuah single URL oleh hand, view sumber atau curl halaman dan cari http-equiv="refresh" di <head> (ada ready snippets di skrip bagian).

menjadi careful dengan claims di either direction pada ekuitas tautan. Ahrefs help-center baris itu meta refresh “does not pass much or any link juice” (terjemahan) “melakukan bukan lulus much atau apa pun tautan juice” adalah layak questioning — Google’s pengalihan tabel classifies sebuah instan meta refresh di sama permanen-pengalihan interpretation bucket sebagai sebuah 301, yang mana adalah sebuah sinyal tentang bagaimana Google dibaca dan canonicalizes pengalihan, bukan sebuah stated promise tentang identical PageRank, tautan-equity, atau peringkat transfer. Neither Google’s pengalihan dokumentasi nor HTML standar membuat sebuah tegas klaim tentang equity parity antara sebuah meta refresh dan sebuah 301 — karena itu treat “ini lulus the sama nilai sebagai a 301” (terjemahan) “ini lulus yang sama nilai sebagai sebuah 301” dan “ini lulus little atau none” (terjemahan) “ini lulus little atau none” sebagai equally unverified beyond apa’s sebenarnya didokumentasikan: Google classifies ini sebagai permanen, dan processes ini setelah ini memuat halaman.

sebuah meta-refresh sumber halaman masih memiliki -nya sendiri respons HTTP dan -nya sendiri HTML document — auditing satu shouldn’t stop di reading refresh tag. periksa, di urutan: sumber URL’s HTTP status dan respons headers (including sebuah mungkin Refresh header); raw HTML versus apa sebuah browser sebenarnya parses; yang mana refresh arahan adalah pertama (dan therefore efektif) satu, dan -nya resolved absolute target; bagaimana Google’s pengalihan tabel akan mengklasifikasikan ini (instan/permanen vs. tertunda/sementara); sumber halaman’s sendiri tag kanonis, robots directives, dan keterindeksan; akhir destination’s respons; apakah pengalihan adalah cancelable, controllable, atau skipped oleh pengguna/browser preferensi; cache dan riwayat perilaku di spesifik named browser dan versi Anda’re testing (bukan sebagai sebuah universal klaim); tautan internal masih pointing di sumber; dan, terakhir, Anda plan untuk ganti ini dengan sebuah server-side pengalihan. Checklists dan skrip lenses pada ini halaman break ini ke concrete langkah dan commands.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.