Untuk mengikuti standar web modern dan menyediakan fungsionalitas lintas-browser, saya lebih suka menggunakan generator pengalihan
Patartics Milán
1
Gunakan .htaccess atau IIS setara untuk melakukan pengalihan sisi server. Dengan begitu, bahkan jika halaman fisik Anda hilang, pengalihan masih akan berfungsi.
Alat insider.zone membuat pengalihan saya semua huruf kecil, menyebabkan 404s. Plus tidak ada cara untuk menghubungi siapa pun yang membuat halaman tentang itu.
Penggunaan meta refresh tidak dianjurkan oleh World Wide Web Consortium (W3C). Ref: en.wikipedia.org/wiki/Meta_refresh . Jadi disarankan untuk menggunakan pengalihan server sebagai gantinya. Pengalihan JavaScript mungkin tidak berfungsi di semua ponsel karena JavaScript mungkin dinonaktifkan.
NinethSense
61
FYI, 0sarana untuk menyegarkan setelah 0 detik. Anda mungkin ingin memberi pengguna lebih banyak waktu untuk mengetahui apa yang terjadi.
Dennis
5
@Paul Draper, itu tergantung pada server yang Anda jalankan
Gal Margalit
9
Saya menambahkan penutupan tag untuk menghormati spesifikasi XHTML5.
ZenLulz
98
Komentar @ NinethSense membuat meta refresh tampak seperti pengalihan JavaScript. Refresh meta bukan JS dan masih akan berfungsi ketika JS dinonaktifkan.
Druska
1104
Saya akan menggunakan kedua meta , dan kode JavaScript dan akan memiliki tautan untuk berjaga-jaga.
<!DOCTYPE HTML><htmllang="en-US"><head><metacharset="UTF-8"><metahttp-equiv="refresh"content="0; url=http://example.com"><scripttype="text/javascript">
window.location.href ="http://example.com"</script><title>Page Redirection</title></head><body><!-- Note: don't tell people to `click` the link, just tell them that it is a link. -->
If you are not redirected automatically, follow this <ahref='http://example.com'>link to example</a>.
</body></html>
Untuk kelengkapan, saya pikir cara terbaik, jika mungkin, adalah dengan menggunakan pengalihan server, jadi kirim kode status 301 . Ini mudah dilakukan melalui .htaccessfile menggunakan Apache , atau melalui banyak plugin menggunakan WordPress . Saya yakin ada juga plugin untuk semua sistem manajemen konten utama. Juga, cPanel memiliki konfigurasi yang sangat mudah untuk pengalihan 301 jika Anda menginstalnya di server Anda.
Halaman pengalihan ini bisa lebih ringkas dengan HTML5: pastebin.com/2qmfUZMk (yang berfungsi di semua browser, dan melewati validasi w3c)
enyo
9
@enyo Saya bukan penggemar menjatuhkan bodytag dan sejenisnya. Mungkin ini valid, dan mungkin berfungsi di browser umum. Saya yakin ada beberapa kasus pinggiran yang menyebabkan masalah, dan manfaatnya kecil.
Billy Moon
9
@Fricker karena mereka mungkin tidak mengklik. Mereka mungkin mengendalikan melalui suara, mengetuk, atau menavigasi dengan cara yang tidak diketahui. Ini adalah pedoman aksesibilitas untuk mengikuti standar untuk kontrol, seperti menggunakan atribut HTML A standar untuk tautan, dan untuk memikirkannya, dan mengomunikasikannya sebagai tautan, dan tidak menentukan bagaimana seseorang harus berinteraksi dengannya. Juga, memiliki click heretautan tidak disarankan, karena pembaca layar akan lebih sulit untuk dinavigasi. Tautan harus berupa teks yang menjelaskan tujuan, sehingga pengguna tahu di mana mereka akan tiba sebelum mengikutinya, dan bagaimanapun mereka berinteraksi dengannya.
Billy Moon
2
@BillyMoon, Sebenarnya arti dari "klik" sudah kelebihan beban untuk memasukkan semua makna juga. "klik" akan baik-baik saja.
Pacerier
2
@BillyMoon dalam keadaan apa kadang-kadang browser mengabaikan 0 meta refresh nilai? Terima kasih!
Anda akan menggunakan tautan kanonik selain pengalihan? en.wikipedia.org/wiki/Canonical_link_element mengatakan bahwa Google lebih memilih penggunaan pengalihan daripada tautan kanonik.
LarsH
1
@ LarsH Jadi apa yang paling penting untuk SEO, apakah itu redirect link atau halaman tujuan akhir?
Pertanyaannya secara spesifik menanyakan halaman .html dasar. Saya kira penanya tidak dapat mengubah .htaccess atau yang serupa (misalnya menggunakan Halaman Github atau hosting yang serupa). 301 tidak dapat dilakukan dalam kasus-kasus seperti itu
Nicolas Raoul
26
Jika Anda ingin mengikuti standar web modern, Anda harus menghindari pengalihan meta HTML biasa. Jika Anda tidak dapat membuat kode sisi server, Anda harus memilih JavaScript redirect .
Untuk mendukung browser yang dinonaktifkan JavaScript, tambahkan baris pengalihan meta HTML ke noscriptelemen. The noscriptbersarang meta redirect dikombinasikan dengancanonical tag akan membantu peringkat mesin pencari Anda juga.
Jika Anda ingin menghindari pengalihan loop, Anda harus menggunakan location.replace() fungsi JavaScript.
Kode pengalihan URL sisi klien yang tepat terlihat seperti ini (dengan Internet Explorer 8 dan perbaikan yang lebih rendah dan tanpa penundaan):
<!-- Pleace this snippet right after opening the head tag to make it work properly --><!-- This code is licensed under GNU GPL v3 --><!-- You are allowed to freely copy, distribute and use this code, but removing author credit is strictly prohibited --><!-- Generated by http://insider.zone/tools/client-side-url-redirect-generator/ --><!-- REDIRECTING STARTS --><linkrel="canonical"href="https://stackoverflow.com/"/><noscript><metahttp-equiv="refresh"content="0; URL=https://stackoverflow.com/"></noscript><!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]--><scripttype="text/javascript">var url ="https://stackoverflow.com/";if(typeof IE_fix !="undefined")// IE8 and lower fix to pass the http referer{
document.write("redirecting...");// Don't remove this line or appendChild() will fail because it is called before document.onload to make the redirect as fast as possible. Nobody will see this text, it is only a tech fix.var referLink = document.createElement("a");
referLink.href = url;
document.body.appendChild(referLink);
referLink.click();}else{ window.location.replace(url);}// All other browsers</script><!-- Credit goes to http://insider.zone/ --><!-- REDIRECTING ENDS -->
Argumen yang disediakan w3c terhadap pengalihan HTML juga berlaku untuk pengalihan Javascript. Selain itu, pengalihan Javascript memerlukan javascript diaktifkan, berbeda dengan pengalihan HTML. Oleh karena itu pengalihan HTML benar-benar lebih baik daripada pengalihan Javascript dalam kasus di mana orang dapat menggunakan keduanya.
Kode pengalihan HTML di atas akan mengarahkan pengunjung Anda ke halaman web lain secara instan. The content="0;dapat berubah ke jumlah detik Anda ingin browser menunggu sebelum mengarahkan.
Saya menemukan masalah ketika bekerja dengan aplikasi jQuery Mobile , di mana dalam beberapa kasus tag header Meta saya tidak akan mencapai pengalihan dengan benar (jQuery Mobile tidak membaca header secara otomatis untuk setiap halaman sehingga menempatkan JavaScript juga tidak efektif kecuali membungkusnya dengan kompleksitas). Saya menemukan solusi termudah dalam hal ini adalah dengan menempatkan pengalihan JavaScript langsung ke badan dokumen, sebagai berikut:
<html><head><metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/><metahttp-equiv="refresh"content="0;url=myURL"/></head><body><p>You are not logged in!</p><scriptlanguage="javascript">
window.location ="myURL";</script></body></html>
Ini sepertinya bekerja dalam setiap kasus untuk saya.
Cara sederhana yang berfungsi untuk semua jenis halaman adalah dengan menambahkan metatag di kepala:
<html><head>
...
<metaHTTP-EQUIV="REFRESH"content="seconds; url=your.full.url/path/filename">
...
</head><body>
Don't put much content, just some text and an anchor.
Actually, you will be redirected in N seconds (as specified in content attribute).
That's all.
...
</body></html>
Saya menggunakan skrip yang mengalihkan pengguna dari index.html ke url relatif Halaman Login
<html><head><title>index.html</title></head><bodyonload="document.getElementById('lnkhome').click();"><ahref="/Pages/Login.aspx"id="lnkhome">Go to Login Page<a></body></html>
Redirect url dalam metode di atas bisa relatif. misalnya: Anda ingin mengalihkan ke halaman Login atau halaman relatif apa saja dengan index.html di root situs web. tidak perlu tahu nama domain Anda. tetapi ketika Anda mengatur window.location.href = "xxx"; Anda harus tahu nama domain.
Pertanyaannya secara spesifik menanyakan halaman .html dasar. Saya kira penanya tidak dapat mengubah .htaccess atau yang serupa (misalnya menggunakan Halaman Github atau hosting yang serupa). PHP tidak tersedia dalam kasus seperti itu.
Nicolas Raoul
Saya akan mempertimbangkan sesuatu yang dihasilkan oleh PHP (Pre-Hypertext Processor) sebagai "halaman HTML dasar". Tidak ada dalam pertanyaan yang menyebutkan jenis file.
<!DOCTYPE html><html><head><metacharset="UTF-8"><title>Redirect to a page</title></head><bodyonload="window.location.assign('http://example.com')"></body></html>
ini sudah tercakup dalam jawaban yang diterima & komentar teratas - pertimbangkan untuk mengedit jawaban daripada memposting yang duplikat
RozzA
3
Sejauh yang saya mengerti, semua metode yang saya lihat sejauh ini untuk pertanyaan ini sepertinya menambah lokasi lama ke dalam sejarah. Untuk mengarahkan ulang halaman, tetapi tidak memiliki lokasi lama dalam sejarah, saya menggunakan replacemetode ini:
Ini adalah solusi pengalihan dengan semua yang saya inginkan tetapi tidak dapat menemukan potongan bersih yang bagus untuk memotong & menempel.
Cuplikan ini memiliki sejumlah keunggulan:
memungkinkan Anda menangkap dan menyimpan setiap querystring params yang dimiliki orang di url mereka
membuat tautan menjadi tidak sesuai untuk menghindari caching yang tidak diinginkan
memungkinkan Anda memberi tahu pengguna nama-nama situs lama dan baru
menunjukkan hitungan mundur yang dapat diatur
dapat digunakan untuk pengalihan tautan dalam karena mempertahankan params
Cara Penggunaan:
Jika Anda memigrasikan seluruh situs maka pada server lama hentikan situs asli dan buat yang lain dengan file ini sebagai file index.html default di folder root. Edit pengaturan situs sehingga kesalahan 404 diarahkan ke halaman index.html ini. Ini menangkap siapa saja yang mengakses situs lama dengan tautan ke halaman sub-level dll.
Sekarang buka tag skrip pembuka dan edit alamat web oldsite dan newSite, dan ubah nilai detik sesuai kebutuhan.
Simpan dan mulai situs web Anda. Pekerjaan selesai - waktu untuk minum kopi.
<!DOCTYPE html><html><head><METAHTTP-EQUIV="CACHE-CONTROL"CONTENT="NO-CACHE"><METAHTTP-EQUIV="PRAGMA"CONTENT="NO-CACHE"><METAHTTP-EQUIV="EXPIRES"CONTENT="Mon, 22 Jul 2002 11:12:01 GMT"><style>
body {margin:200px;font:12pt helvetica;}</style></head><body></body><scripttype="text/javascript">// Edit these to suit your needs.var oldsite ='http://theoldsitename.com'var newSite ="https://thenewsitename.com";var seconds =20;// countdown delay.var path = location.pathname;var srch = location.search;var uniq =Math.floor((Math.random()*10000)+1);var newPath = newSite + path +(srch ===''?"?"+ uniq : srch +"&"+ uniq);
document.write ('<p>As part of hosting improvements, the system has been migrated from '+ oldsite +' to</p>');
document.write ('<p><a href="'+ newPath +'">'+ newSite +'</a></p>');
document.write ('<p>Please take note of the new website address.</p>');
document.write ('<p>If you are not automatically redirected please click the link above to proceed.</p>');
document.write ('<p id="dvCountDown">You will be redirected after <span id = "lblCount"></span> seconds.</p>');functionDelayRedirect(){var dvCountDown = document.getElementById("dvCountDown");var lblCount = document.getElementById("lblCount");
dvCountDown.style.display ="block";
lblCount.innerHTML = seconds;
setInterval(function(){
seconds--;
lblCount.innerHTML = seconds;if(seconds ==0){
dvCountDown.style.display ="none";
window.location = newPath;}},1000);}DelayRedirect()</script></html>
Redirect menggunakan JavaScript, <noscript>seandainya JS dinonaktifkan.
<script>
window.location.replace("https://google.com");</script><noscript><ahref="https://google.com">Click here if you are not redirected automatically.</a></noscript>
Jawaban:
Coba gunakan:
Catatan: Tempatkan di bagian kepala.
Selain itu untuk peramban yang lebih lama jika Anda menambahkan tautan cepat jika itu tidak menyegarkan dengan benar:
<p><a href="http://example.com/">Redirect</a></p>
Akan muncul sebagai
Arahkan ulang
Ini masih akan memungkinkan Anda untuk mencapai tujuan dengan klik tambahan.
sumber
0
sarana untuk menyegarkan setelah 0 detik. Anda mungkin ingin memberi pengguna lebih banyak waktu untuk mengetahui apa yang terjadi.Saya akan menggunakan kedua meta , dan kode JavaScript dan akan memiliki tautan untuk berjaga-jaga.
Untuk kelengkapan, saya pikir cara terbaik, jika mungkin, adalah dengan menggunakan pengalihan server, jadi kirim kode status 301 . Ini mudah dilakukan melalui
.htaccess
file menggunakan Apache , atau melalui banyak plugin menggunakan WordPress . Saya yakin ada juga plugin untuk semua sistem manajemen konten utama. Juga, cPanel memiliki konfigurasi yang sangat mudah untuk pengalihan 301 jika Anda menginstalnya di server Anda.sumber
body
tag dan sejenisnya. Mungkin ini valid, dan mungkin berfungsi di browser umum. Saya yakin ada beberapa kasus pinggiran yang menyebabkan masalah, dan manfaatnya kecil.click here
tautan tidak disarankan, karena pembaca layar akan lebih sulit untuk dinavigasi. Tautan harus berupa teks yang menjelaskan tujuan, sehingga pengguna tahu di mana mereka akan tiba sebelum mengikutinya, dan bagaimanapun mereka berinteraksi dengannya.JavaScript
Tag meta
sumber
Saya juga akan menambahkan tautan kanonik untuk membantu orang SEO Anda :
sumber
Tag meta berikut, ditempatkan di antara bagian dalam kepala, akan memberi tahu browser untuk mengalihkan:
Ganti detik dengan jumlah detik untuk menunggu sebelum dialihkan, dan ganti URL dengan URL yang Anda inginkan untuk dialihkan.
Atau, Anda dapat mengarahkan ulang dengan JavaScript. Tempatkan ini di dalam tag skrip di mana saja di halaman:
sumber
Ini adalah jumlah dari setiap jawaban sebelumnya ditambah solusi tambahan menggunakan HTTP Refresh Header via .htaccess
1. HTTP Refresh Header
Pertama-tama, Anda dapat menggunakan .htaccess untuk mengatur header refresh seperti ini
Ini adalah "statis" yang setara dengan menggunakan
header()
fungsi dalam PHPPerhatikan bahwa solusi ini tidak didukung oleh setiap browser.
2. JavaScript
Dengan URL alternatif :
Tanpa URL alternatif:
Melalui jQuery:
3. Meta Refresh
Anda dapat menggunakan meta refresh ketika dependensi pada JavaScript dan redirect header tidak diinginkan
Dengan URL alternatif:
Tanpa URL alternatif:
Menggunakan
<noscript>
:Opsional
Seperti yang direkomendasikan oleh Billy Moon, Anda dapat memberikan tautan refresh jika terjadi kesalahan:
Jika Anda tidak dialihkan secara otomatis:
<a href='http://example.com/alternat_url.html'>Click here</a>
Sumber daya
Wikipedia Meta penyegaran
Dampak Kinerja dari META REFRESH
Segarkan (muat ulang) satu halaman sekali menggunakan jQuery?
sumber
setTimeout
dengan string. Lewatkan fungsi sebagai gantinya.Akan lebih baik untuk menyiapkan pengalihan 301 . Lihat Alat Alat Webmaster Google 301 pengalihan .
sumber
Jika Anda ingin mengikuti standar web modern, Anda harus menghindari pengalihan meta HTML biasa. Jika Anda tidak dapat membuat kode sisi server, Anda harus memilih JavaScript redirect .
Untuk mendukung browser yang dinonaktifkan JavaScript, tambahkan baris pengalihan meta HTML ke
noscript
elemen. Thenoscript
bersarang meta redirect dikombinasikan dengancanonical
tag akan membantu peringkat mesin pencari Anda juga.Jika Anda ingin menghindari pengalihan loop, Anda harus menggunakan
location.replace()
fungsi JavaScript.Kode pengalihan URL sisi klien yang tepat terlihat seperti ini (dengan Internet Explorer 8 dan perbaikan yang lebih rendah dan tanpa penundaan):
sumber
<meta http-equiv="refresh"
ditinggalkan oleh W3C.Anda dapat menggunakan "redirect" META :
atau pengalihan JavaScript (perhatikan bahwa tidak semua pengguna mengaktifkan JavaScript, jadi selalu siapkan solusi cadangan untuk mereka)
Tapi saya lebih suka merekomendasikan menggunakan mod_rewrite , jika Anda memiliki opsi.
sumber
Segera setelah halaman dimuat,
init
fungsi diaktifkan dan halaman dialihkan:sumber
Tempatkan kode berikut di antara tag <HEAD> dan </HEAD> dari kode HTML Anda:
Kode pengalihan HTML di atas akan mengarahkan pengunjung Anda ke halaman web lain secara instan. The
content="0;
dapat berubah ke jumlah detik Anda ingin browser menunggu sebelum mengarahkan.sumber
Masukkan kode berikut di
<head>
bagian:sumber
Saya menemukan masalah ketika bekerja dengan aplikasi jQuery Mobile , di mana dalam beberapa kasus tag header Meta saya tidak akan mencapai pengalihan dengan benar (jQuery Mobile tidak membaca header secara otomatis untuk setiap halaman sehingga menempatkan JavaScript juga tidak efektif kecuali membungkusnya dengan kompleksitas). Saya menemukan solusi termudah dalam hal ini adalah dengan menempatkan pengalihan JavaScript langsung ke badan dokumen, sebagai berikut:
Ini sepertinya bekerja dalam setiap kasus untuk saya.
sumber
Cara sederhana yang berfungsi untuk semua jenis halaman adalah dengan menambahkan
meta
tag di kepala:sumber
Anda harus menggunakan JavaScript. Tempatkan kode berikut di tag kepala Anda:
sumber
Anda dapat mengalihkan secara otomatis dengan Kode Status HTTP 301 atau 302.
Untuk PHP:
sumber
Saya menggunakan skrip yang mengalihkan pengguna dari index.html ke url relatif Halaman Login
sumber
Hanya untuk ukuran yang baik:
Pastikan tidak ada gema di atas skrip jika tidak akan diabaikan. http://php.net/manual/en/function.header.php
sumber
Cukup gunakan event onload dari tag tubuh:
sumber
Mesin silet untuk penundaan 5 detik:
sumber
sumber
Anda tidak memerlukan kode JavaScript apa pun untuk ini. Tulis ini di
<head>
bagian halaman HTML:Segera setelah halaman dimuat pada 0 detik, Anda dapat pergi ke halaman Anda.
sumber
Sejauh yang saya mengerti, semua metode yang saya lihat sejauh ini untuk pertanyaan ini sepertinya menambah lokasi lama ke dalam sejarah. Untuk mengarahkan ulang halaman, tetapi tidak memiliki lokasi lama dalam sejarah, saya menggunakan
replace
metode ini:sumber
Ini adalah solusi pengalihan dengan semua yang saya inginkan tetapi tidak dapat menemukan potongan bersih yang bagus untuk memotong & menempel.
Cuplikan ini memiliki sejumlah keunggulan:
Cara Penggunaan:
Jika Anda memigrasikan seluruh situs maka pada server lama hentikan situs asli dan buat yang lain dengan file ini sebagai file index.html default di folder root. Edit pengaturan situs sehingga kesalahan 404 diarahkan ke halaman index.html ini. Ini menangkap siapa saja yang mengakses situs lama dengan tautan ke halaman sub-level dll.
Sekarang buka tag skrip pembuka dan edit alamat web oldsite dan newSite, dan ubah nilai detik sesuai kebutuhan.
Simpan dan mulai situs web Anda. Pekerjaan selesai - waktu untuk minum kopi.
sumber
Redirect menggunakan JavaScript,
<noscript>
seandainya JS dinonaktifkan.sumber
Gunakan kode ini:
Harap perhatikan: taruh di tag kepala.
sumber
Anda dapat melakukannya di javascript:
sumber
Anda bisa menggunakan ini
sumber