เป็นไปได้ไหมที่จะตั้งค่าหน้า HTML พื้นฐานเพื่อเปลี่ยนเส้นทางไปยังหน้าอื่นขณะโหลด
เป็นไปได้ไหมที่จะตั้งค่าหน้า HTML พื้นฐานเพื่อเปลี่ยนเส้นทางไปยังหน้าอื่นขณะโหลด
คำตอบ:
ลองใช้:
<meta http-equiv="refresh" content="0; url=http://example.com/" />
หมายเหตุ: วางไว้ในส่วนหัว
นอกจากนี้สำหรับเบราว์เซอร์รุ่นเก่าหากคุณเพิ่มลิงค์ด่วนในกรณีที่ไม่สามารถรีเฟรชได้อย่างถูกต้อง:
<p><a href="http://example.com/">Redirect</a></p>
จะปรากฏเป็น
วิธีนี้จะช่วยให้คุณสามารถไปยังตำแหน่งที่คุณต้องการด้วยการคลิกเพิ่มเติม
0
หมายถึงการรีเฟรชหลังจาก 0 วินาที คุณอาจต้องการให้เวลากับผู้ใช้ในการรู้ว่าเกิดอะไรขึ้น
ฉันจะใช้ทั้งเมตาและโค้ด JavaScriptและจะมีลิงก์ในกรณี
<!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>
เพื่อความสมบูรณ์ฉันคิดว่าวิธีที่ดีที่สุดถ้าเป็นไปได้คือใช้การเปลี่ยนเส้นทางเซิร์ฟเวอร์ดังนั้นให้ส่งรหัสสถานะ301 นี้เป็นเรื่องง่ายที่จะทำผ่านทาง.htaccess
ไฟล์โดยใช้Apacheหรือผ่านทางปลั๊กอินจำนวนมากโดยใช้WordPress ฉันแน่ใจว่ามีปลั๊กอินสำหรับระบบการจัดการเนื้อหาที่สำคัญทั้งหมด นอกจากนี้ cPanel ยังมีการกำหนดค่าที่ง่ายมากสำหรับการเปลี่ยนเส้นทาง 301 หากคุณมีการติดตั้งบนเซิร์ฟเวอร์ของคุณ
body
แท็กและสิ่งที่คล้ายกัน บางทีมันอาจตรวจสอบและอาจทำงานในเบราว์เซอร์ทั่วไป ฉันแน่ใจว่ามีบางกรณีที่มันทำให้เกิดปัญหาและผลประโยชน์ที่ดูเหมือนเล็ก
click here
ไม่แนะนำให้มีลิงก์เนื่องจากโปรแกรมอ่านหน้าจอจะนำทางได้ยากขึ้น ลิงก์ควรอยู่ในข้อความที่อธิบายถึงปลายทางดังนั้นผู้ใช้จึงรู้ว่าพวกเขาจะมาถึงที่ใดก่อนที่จะติดตามและพวกเขาโต้ตอบกับมัน
<script type="text/javascript">
window.location.href = "http://example.com";
</script>
<meta http-equiv="refresh" content="0;url=http://example.com">
ฉันจะยังเพิ่มการเชื่อมโยงที่ยอมรับที่จะช่วยให้คุณSEOคน:
<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish"/>
เมตาแท็กต่อไปนี้ซึ่งอยู่ระหว่างส่วนหัวจะบอกให้เบราว์เซอร์เปลี่ยนเส้นทาง:
<meta http-equiv="Refresh" content="seconds; url=URL">
แทนที่วินาทีด้วยจำนวนวินาทีเพื่อรอก่อนที่จะเปลี่ยนเส้นทางและแทนที่ URL ด้วย URL ที่คุณต้องการเปลี่ยนเส้นทาง
หรือคุณสามารถเปลี่ยนเส้นทางด้วย JavaScript วางสิ่งนี้ไว้ภายในแท็กสคริปต์ที่ใดก็ได้บนหน้าเว็บ:
window.location = "URL"
นี่คือผลรวมของทุกคำตอบก่อนหน้านี้รวมถึงโซลูชั่นเพิ่มเติมโดยใช้ HTTP Refresh Header ผ่าน. htaccess
1. ส่วนหัวรีเฟรช HTTP
ก่อนอื่นคุณสามารถใช้. htaccess เพื่อตั้งค่าส่วนหัวรีเฟรชเช่นนี้
Header set Refresh "3"
นี่คือเทียบเท่า "คงที่" ของการใช้header()
ฟังก์ชั่นในPHP
header("refresh: 3;");
โปรดทราบว่าทุกเบราว์เซอร์ไม่รองรับการแก้ปัญหานี้
2. JavaScript
ด้วยURLสำรอง:
<script>
setTimeout(function(){location.href="http://example.com/alternate_url.html"} , 3000);
</script>
ไม่มี URL สำรอง:
<script>
setTimeout("location.reload(true);",timeoutPeriod);
</script>
ผ่าน jQuery:
<script>
window.location.reload(true);
</script>
3. Meta Refresh
คุณสามารถใช้การรีเฟรชเมตาเมื่อการพึ่งพา JavaScript และส่วนหัวของการเปลี่ยนเส้นทางไม่พึงประสงค์
ด้วย URL สำรอง:
<meta http-equiv="Refresh" content="3; url=http://example.com/alternate_url.html">
ไม่มี URL สำรอง:
<meta http-equiv="Refresh" content="3">
การใช้<noscript>
:
<noscript>
<meta http-equiv="refresh" content="3" />
</noscript>
เลือก
ตามที่ Billy Moon แนะนำคุณสามารถให้ลิงค์รีเฟรชในกรณีที่มีบางอย่างผิดปกติ:
หากคุณไม่ได้เปลี่ยนเส้นทางโดยอัตโนมัติ: <a href='http://example.com/alternat_url.html'>Click here</a>
ทรัพยากร
setTimeout
ด้วยสตริง ผ่านฟังก์ชั่นแทน
หากคุณรอคอยที่จะปฏิบัติตามมาตรฐานเว็บสมัยใหม่คุณควรหลีกเลี่ยงการเปลี่ยนเส้นทางเมตา HTML ธรรมดา หากคุณไม่สามารถสร้างรหัสฝั่งเซิร์ฟเวอร์คุณควรเลือกJavaScript redirectแทน
เพื่อรองรับเบราว์เซอร์ที่ปิดใช้งาน JavaScript ให้เพิ่มบรรทัดการเปลี่ยนเส้นทางเมตา HTML ไปที่noscript
องค์ประกอบ noscript
เปลี่ยนเส้นทาง meta ซ้อนกันรวมกับcanonical
แท็กจะช่วยให้การจัดอันดับของเครื่องมือค้นหาของคุณได้เป็นอย่างดี
หากคุณต้องการหลีกเลี่ยงการเปลี่ยนเส้นทางลูปคุณควรใช้ location.replace()
ฟังก์ชัน JavaScript
รหัสการเปลี่ยนเส้นทาง URLฝั่งไคลเอ็นต์ที่เหมาะสมจะมีลักษณะดังนี้ (ด้วย Internet Explorer 8 และการแก้ไขที่ต่ำกว่าและไม่ล่าช้า):
<!-- 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"
เลิกใช้งานโดย W3C
คุณสามารถใช้"การเปลี่ยนเส้นทาง" ของMETA :
<meta http-equiv="refresh" content="0; url=http://new.example.com/address" />
หรือการเปลี่ยนเส้นทางJavaScript (โปรดทราบว่าผู้ใช้บางคนไม่ได้เปิดใช้งาน JavaScript จึงเตรียมโซลูชันสำรองไว้เสมอ)
<script language="javascript">
window.location = "http://new.example.com/address";
</script>
แต่ฉันอยากจะแนะนำให้ใช้mod_rewriteถ้าคุณมีตัวเลือก
ทันทีที่โหลดเพจinit
ฟังก์ชันจะเริ่มทำงานและหน้าถูกเปลี่ยนเส้นทาง:
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<script>
function init()
{
window.location.href = "www.wherever.com";
}
</script>
</head>
<body onload="init()">
</body>
</html>
วางรหัสต่อไปนี้ระหว่างแท็ก <HEAD> และ </HEAD> ของรหัส HTML ของคุณ:
<meta HTTP-EQUIV="REFRESH" content="0; url=http://example.com/index.html">
โค้ดเปลี่ยนเส้นทาง HTML ด้านบนจะเปลี่ยนเส้นทางผู้เยี่ยมชมของคุณไปยังหน้าเว็บอื่นทันที content="0;
อาจจะเปลี่ยนไปเป็นจำนวนวินาทีที่คุณต้องการเบราว์เซอร์ที่จะรอก่อนที่จะเปลี่ยนเส้นทาง
ใส่รหัสต่อไปนี้ใน <head>
ส่วน:
<meta http-equiv="refresh" content="0; url=http://address/">
ฉันพบปัญหาขณะทำงานกับแอปพลิเคชันjQuery Mobileซึ่งในบางกรณีแท็กส่วนหัว Meta ของฉันจะไม่สามารถเปลี่ยนเส้นทางได้อย่างถูกต้อง (jQuery Mobile ไม่อ่านส่วนหัวโดยอัตโนมัติสำหรับแต่ละหน้าดังนั้นการวาง JavaScript ก็ไม่มีประสิทธิภาพ ซับซ้อน) ฉันพบทางออกที่ง่ายที่สุดในกรณีนี้คือการเปลี่ยนเส้นทาง JavaScript โดยตรงไปยังเนื้อหาของเอกสารดังต่อไปนี้:
<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>
ดูเหมือนว่าจะใช้ได้ในทุกกรณีสำหรับฉัน
วิธีง่าย ๆ ที่เหมาะกับหน้าเว็บทุกประเภทเพียงเพิ่มmeta
แท็กที่ส่วนหัว:
<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>
คุณควรใช้ JavaScript วางรหัสต่อไปนี้ในแท็กหัวของคุณ:
<script type="text/javascript">
window.location.assign("http://www.example.com")
</script>
คุณสามารถเปลี่ยนเส้นทางอัตโนมัติโดยรหัสสถานะ HTTP 301 หรือ 302
สำหรับ PHP:
<?php
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://www.redirect-url.com");
?>
ฉันใช้สคริปต์ที่เปลี่ยนเส้นทางผู้ใช้จาก index.html ไปยังURL ที่เกี่ยวข้องของหน้าเข้าสู่ระบบ
<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>
เพียงเพื่อการวัดที่ดี:
<?php
header("Location: example@example.com", TRUE, 303);
exit;
?>
ตรวจสอบให้แน่ใจว่าไม่มีเสียงสะท้อนด้านบนของสคริปต์มิฉะนั้นจะถูกละเว้น http://php.net/manual/en/function.header.php
เพียงใช้เหตุการณ์ onload ของแท็กเนื้อหา:
<body onload="window.location = 'http://example.com/'">
เครื่องยนต์มีดโกนนาน 5 วินาที:
<meta http-equiv="Refresh"
content="5; url=@Url.Action("Search", "Home", new { id = @Model.UniqueKey }))">
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Redirect to a page</title>
</head>
<body onload="window.location.assign('http://example.com')">
</body>
</html>
คุณไม่จำเป็นต้องใช้รหัส JavaScript สำหรับสิ่งนี้ เขียนสิ่งนี้ใน<head>
ส่วนของหน้า HTML:
<meta http-equiv="refresh" content="0; url=example.com" />
ทันทีที่หน้าโหลดที่ 0 วินาทีคุณสามารถไปที่หน้าของคุณ
เท่าที่ฉันเข้าใจพวกเขาวิธีการทั้งหมดที่ฉันได้เห็นจนถึงตอนนี้สำหรับคำถามนี้ดูเหมือนจะเพิ่มตำแหน่งเก่าให้กับประวัติศาสตร์ หากต้องการเปลี่ยนเส้นทางของหน้า แต่ไม่มีตำแหน่งเก่าในประวัติฉันใช้replace
วิธีการ:
<script>
window.location.replace("http://example.com");
</script>
นี่เป็นโซลูชันการเปลี่ยนเส้นทางที่มีทุกสิ่งที่ฉันต้องการ แต่ไม่พบในตัวอย่างข้อมูลที่สะอาดดีในการตัด & วาง
ตัวอย่างนี้มีข้อดีหลายประการ:
วิธีใช้:
หากคุณย้ายทั้งไซต์จากนั้นบนเซิร์ฟเวอร์เก่าให้หยุดไซต์เดิมและสร้างอีกไซต์โดยใช้ไฟล์นี้เป็นไฟล์ index.html เริ่มต้นในโฟลเดอร์รูท แก้ไขการตั้งค่าไซต์เพื่อให้ข้อผิดพลาด 404 ถูกเปลี่ยนเส้นทางไปยังหน้า index.html นี้ สิ่งนี้จะดึงดูดผู้ที่เข้าใช้งานเว็บไซต์เก่าโดยมีลิงก์ไปยังหน้าย่อย ฯลฯ
ตอนนี้ไปที่แท็กเปิดสคริปต์และแก้ไขเว็บไซต์เก่าและที่อยู่เว็บไซต์ใหม่และเปลี่ยนค่าวินาทีตามต้องการ
บันทึกและเริ่มเว็บไซต์ของคุณ งานเสร็จ - เวลาสำหรับกาแฟ
<!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>
เปลี่ยนเส้นทางโดยใช้ JavaScript <noscript>
ในกรณีที่ JS ปิดการใช้งาน
<script>
window.location.replace("https://google.com");
</script>
<noscript>
<a href="https://google.com">Click here if you are not redirected automatically.</a>
</noscript>
คุณสามารถทำได้ใน javascript:
location = "url";
คุณสามารถใช้สิ่งนี้
<meta http-equiv="refresh" content="0; url=http://newpage.com/" />