Apakah mungkin untuk mengatur halaman HTML dasar untuk mengalihkan ke halaman lain saat dimuat?
Apakah mungkin untuk mengatur halaman HTML dasar untuk mengalihkan ke halaman lain saat dimuat?
Jawaban:
Coba gunakan:
<meta http-equiv="refresh" content="0; url=http://example.com/" />
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
Ini masih akan memungkinkan Anda untuk mencapai tujuan dengan klik tambahan.
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.
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="0; url=http://example.com">
<script type="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 <a href='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 .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.
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.
Saya juga akan menambahkan tautan kanonik untuk membantu orang SEO Anda :
<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish"/>
Tag meta berikut, ditempatkan di antara bagian dalam kepala, akan memberi tahu browser untuk mengalihkan:
<meta http-equiv="Refresh" content="seconds; url=URL">
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:
window.location = "URL"
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
Header set Refresh "3"
Ini adalah "statis" yang setara dengan menggunakan header()
fungsi dalam PHP
header("refresh: 3;");
Perhatikan bahwa solusi ini tidak didukung oleh setiap browser.
2. JavaScript
Dengan URL alternatif :
<script>
setTimeout(function(){location.href="http://example.com/alternate_url.html"} , 3000);
</script>
Tanpa URL alternatif:
<script>
setTimeout("location.reload(true);",timeoutPeriod);
</script>
Melalui jQuery:
<script>
window.location.reload(true);
</script>
3. Meta Refresh
Anda dapat menggunakan meta refresh ketika dependensi pada JavaScript dan redirect header tidak diinginkan
Dengan URL alternatif:
<meta http-equiv="Refresh" content="3; url=http://example.com/alternate_url.html">
Tanpa URL alternatif:
<meta http-equiv="Refresh" content="3">
Menggunakan <noscript>
:
<noscript>
<meta http-equiv="refresh" content="3" />
</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
setTimeout
dengan string. Lewatkan fungsi sebagai gantinya.
Akan lebih baik untuk menyiapkan pengalihan 301 . Lihat Alat Alat Webmaster Google 301 pengalihan .
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. The noscript
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):
<!-- 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 -->
<link rel="canonical" href="https://stackoverflow.com/"/>
<noscript>
<meta http-equiv="refresh" content="0; URL=https://stackoverflow.com/">
</noscript>
<!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]-->
<script type="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 -->
<meta http-equiv="refresh"
ditinggalkan oleh W3C.
Anda dapat menggunakan "redirect" META :
<meta http-equiv="refresh" content="0; url=http://new.example.com/address" />
atau pengalihan JavaScript (perhatikan bahwa tidak semua pengguna mengaktifkan JavaScript, jadi selalu siapkan solusi cadangan untuk mereka)
<script language="javascript">
window.location = "http://new.example.com/address";
</script>
Tapi saya lebih suka merekomendasikan menggunakan mod_rewrite , jika Anda memiliki opsi.
Tempatkan kode berikut di antara tag <HEAD> dan </HEAD> dari kode HTML Anda:
<meta HTTP-EQUIV="REFRESH" content="0; url=http://example.com/index.html">
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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="0;url=myURL" />
</head>
<body>
<p>You are not logged in!</p>
<script language="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 meta
tag di kepala:
<html>
<head>
...
<meta HTTP-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>
Anda harus menggunakan JavaScript. Tempatkan kode berikut di tag kepala Anda:
<script type="text/javascript">
window.location.assign("http://www.example.com")
</script>
Anda dapat mengalihkan secara otomatis dengan Kode Status HTTP 301 atau 302.
Untuk PHP:
<?php
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://www.redirect-url.com");
?>
Saya menggunakan skrip yang mengalihkan pengguna dari index.html ke url relatif Halaman Login
<html>
<head>
<title>index.html</title>
</head>
<body onload="document.getElementById('lnkhome').click();">
<a href="/Pages/Login.aspx" id="lnkhome">Go to Login Page<a>
</body>
</html>
Hanya untuk ukuran yang baik:
<?php
header("Location: example@example.com", TRUE, 303);
exit;
?>
Pastikan tidak ada gema di atas skrip jika tidak akan diabaikan. http://php.net/manual/en/function.header.php
Cukup gunakan event onload dari tag tubuh:
<body onload="window.location = 'http://example.com/'">
Mesin silet untuk penundaan 5 detik:
<meta http-equiv="Refresh"
content="5; url=@Url.Action("Search", "Home", new { id = @Model.UniqueKey }))">
Anda tidak memerlukan kode JavaScript apa pun untuk ini. Tulis ini di <head>
bagian halaman HTML:
<meta http-equiv="refresh" content="0; url=example.com" />
Segera setelah halaman dimuat pada 0 detik, Anda dapat pergi ke halaman Anda.
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:
<script>
window.location.replace("http://example.com");
</script>
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.
<!DOCTYPE html>
<html>
<head>
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">
<style>
body { margin: 200px; font: 12pt helvetica; }
</style>
</head>
<body>
</body>
<script type="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>');
function DelayRedirect() {
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>
<a href="https://google.com">Click here if you are not redirected automatically.</a>
</noscript>
Gunakan kode ini:
<meta http-equiv="refresh" content="0; url=https://google.com/" />
Harap perhatikan: taruh di tag kepala.
Anda dapat melakukannya di javascript:
location = "url";
Anda bisa menggunakan ini
<meta http-equiv="refresh" content="0; url=http://newpage.com/" />