Có thể thiết lập một trang HTML cơ bản để chuyển hướng đến một trang khác khi tải không?
Có thể thiết lập một trang HTML cơ bản để chuyển hướng đến một trang khác khi tải không?
Câu trả lời:
Hãy thử sử dụng:
<meta http-equiv="refresh" content="0; url=http://example.com/" />
Lưu ý: Đặt nó trong phần đầu.
Ngoài ra, đối với các trình duyệt cũ hơn nếu bạn thêm một liên kết nhanh trong trường hợp nó không làm mới chính xác:
<p><a href="http://example.com/">Redirect</a></p>
Sẽ xuất hiện dưới dạng
Điều này vẫn sẽ cho phép bạn đến nơi bạn đang đi với một nhấp chuột bổ sung.
0
phương tiện để làm mới sau 0 giây. Bạn có thể muốn cho người dùng thêm thời gian để biết chuyện gì đang xảy ra.
Tôi sẽ sử dụng cả meta và mã JavaScript và sẽ có một liên kết chỉ trong trường hợp.
<!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>
Để hoàn thiện, tôi nghĩ cách tốt nhất, nếu có thể, là sử dụng chuyển hướng máy chủ, vì vậy hãy gửi mã trạng thái 301 . Điều này rất dễ thực hiện thông qua .htaccess
các tệp bằng Apache hoặc qua nhiều plugin bằng WordPress . Tôi chắc chắn cũng có plugin cho tất cả các hệ thống quản lý nội dung chính. Ngoài ra, cPanel có cấu hình rất dễ dàng cho chuyển hướng 301 nếu bạn đã cài đặt trên máy chủ của mình.
body
thẻ và những thứ tương tự. Có lẽ nó xác nhận, và có lẽ hoạt động trong các trình duyệt phổ biến. Tôi chắc chắn có một số trường hợp bên lề nó gây ra vấn đề, và lợi ích có vẻ nhỏ.
click here
không nên sử dụng liên kết, vì trình đọc màn hình sẽ khó điều hướng hơn. Liên kết nên có trên văn bản mô tả đích đến, vì vậy người dùng biết nơi họ sẽ đến trước khi theo dõi và tuy nhiên họ tương tác với nó.
Tôi cũng sẽ thêm một liên kết chuẩn để giúp những người làm SEO của bạn :
<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish"/>
Thẻ meta sau, được đặt giữa bên trong đầu, sẽ cho trình duyệt chuyển hướng:
<meta http-equiv="Refresh" content="seconds; url=URL">
Thay thế giây bằng số giây chờ đợi trước khi nó chuyển hướng và thay thế URL bằng URL bạn muốn nó chuyển hướng đến.
Ngoài ra, bạn có thể chuyển hướng với JavaScript. Đặt cái này bên trong thẻ script ở bất cứ đâu trên trang:
window.location = "URL"
Đây là tổng hợp của tất cả các câu trả lời trước đó cộng với một giải pháp bổ sung bằng cách sử dụng HTTP Refresh Header qua .htaccess
1. Tiêu đề làm mới HTTP
Trước hết, bạn có thể sử dụng .htaccess để đặt tiêu đề làm mới như thế này
Header set Refresh "3"
Đây là tương đương "tĩnh" của việc sử dụng header()
hàm trong PHP
header("refresh: 3;");
Lưu ý rằng giải pháp này không được hỗ trợ bởi mọi trình duyệt.
2. JavaScript
Với một URL thay thế :
<script>
setTimeout(function(){location.href="http://example.com/alternate_url.html"} , 3000);
</script>
Không có URL thay thế:
<script>
setTimeout("location.reload(true);",timeoutPeriod);
</script>
Thông qua jQuery:
<script>
window.location.reload(true);
</script>
3. Làm mới Meta
Bạn có thể sử dụng meta refresh khi không phụ thuộc vào JavaScript và tiêu đề chuyển hướng
Với một URL thay thế:
<meta http-equiv="Refresh" content="3; url=http://example.com/alternate_url.html">
Không có URL thay thế:
<meta http-equiv="Refresh" content="3">
Sử dụng <noscript>
:
<noscript>
<meta http-equiv="refresh" content="3" />
</noscript>
Tùy chọn
Theo khuyến nghị của Billy Moon, bạn có thể cung cấp một liên kết làm mới trong trường hợp xảy ra sự cố:
Nếu bạn không được chuyển hướng tự động: <a href='http://example.com/alternat_url.html'>Click here</a>
Tài nguyên
setTimeout
bằng một chuỗi. Vượt qua một chức năng thay thế.
Nó sẽ tốt hơn để thiết lập một chuyển hướng 301 . Xem bài viết Chuyển hướng 301 của Công cụ quản trị trang web của Google .
Nếu bạn đang mong muốn tuân theo các tiêu chuẩn web hiện đại, bạn nên tránh các chuyển hướng meta HTML đơn giản. Nếu bạn không thể tạo mã phía máy chủ, bạn nên chọn chuyển hướng JavaScript thay thế.
Để hỗ trợ các trình duyệt bị vô hiệu hóa JavaScript, hãy thêm một dòng chuyển hướng meta HTML vào một noscript
phần tử. Các noscript
meta chuyển hướng lồng nhau kết hợp với canonical
thẻ sẽ giúp thứ hạng công cụ tìm kiếm của bạn là tốt.
Nếu bạn muốn tránh các vòng lặp chuyển hướng, bạn nên sử dụng location.replace()
hàm JavaScript.
Mã chuyển hướng URL phía máy khách phù hợp trông như thế này (với Internet Explorer 8 và bản sửa lỗi thấp hơn và không chậm trễ):
<!-- 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 không được chấp nhận.
Bạn có thể sử dụng "chuyển hướng" META :
<meta http-equiv="refresh" content="0; url=http://new.example.com/address" />
hoặc chuyển hướng JavaScript (lưu ý rằng không phải tất cả người dùng đều bật JavaScript nên luôn chuẩn bị giải pháp sao lưu cho họ)
<script language="javascript">
window.location = "http://new.example.com/address";
</script>
Nhưng tôi khuyên bạn nên sử dụng mod_rewrite , nếu bạn có tùy chọn.
Đặt mã sau đây giữa các thẻ <HEAD> và </ HEAD> của mã HTML của bạn:
<meta HTTP-EQUIV="REFRESH" content="0; url=http://example.com/index.html">
Mã chuyển hướng HTML ở trên sẽ chuyển hướng khách truy cập của bạn đến một trang web khác ngay lập tức. Số content="0;
có thể được thay đổi thành số giây bạn muốn trình duyệt chờ trước khi chuyển hướng.
Tôi đã gặp sự cố khi làm việc với ứng dụng jQuery Mobile , trong một số trường hợp, thẻ tiêu đề Meta của tôi không đạt được chuyển hướng đúng cách (jQuery Mobile không tự động đọc các tiêu đề cho mỗi trang nên việc đặt JavaScript cũng không hiệu quả trừ khi gói nó vào độ phức tạp). Tôi đã tìm thấy giải pháp đơn giản nhất trong trường hợp này là đặt chuyển hướng JavaScript trực tiếp vào phần thân của tài liệu, như sau:
<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>
Điều này dường như làm việc trong mọi trường hợp đối với tôi.
Cách đơn giản để làm việc cho tất cả các loại trang chỉ là thêm một meta
thẻ vào đầu:
<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>
Bạn nên sử dụng JavaScript. Đặt mã sau vào thẻ đầu của bạn:
<script type="text/javascript">
window.location.assign("http://www.example.com")
</script>
Bạn có thể tự động chuyển hướng bằng Mã trạng thái HTTP 301 hoặc 302.
Đối với PHP:
<?php
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://www.redirect-url.com");
?>
Tôi sử dụng tập lệnh chuyển hướng người dùng từ index.html sang url tương đối của Trang đăng nhập
<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>
Chỉ cho biện pháp tốt:
<?php
header("Location: example@example.com", TRUE, 303);
exit;
?>
Hãy chắc chắn rằng không có tiếng vang phía trên tập lệnh nếu không nó sẽ bị bỏ qua. http://php.net/manual/en/feft.header.php
Động cơ dao cạo trong 5 giây chậm trễ:
<meta http-equiv="Refresh"
content="5; url=@Url.Action("Search", "Home", new { id = @Model.UniqueKey }))">
Bạn không cần bất kỳ mã JavaScript nào cho việc này. Viết phần này trong <head>
phần của trang HTML:
<meta http-equiv="refresh" content="0; url=example.com" />
Ngay khi trang tải xuống 0 giây, bạn có thể truy cập trang của mình.
Theo như tôi hiểu, tất cả các phương pháp tôi đã thấy cho đến nay cho câu hỏi này dường như thêm vị trí cũ vào lịch sử. Để chuyển hướng trang, nhưng không có vị trí cũ trong lịch sử, tôi sử dụng replace
phương pháp:
<script>
window.location.replace("http://example.com");
</script>
Đây là một giải pháp chuyển hướng với mọi thứ tôi muốn nhưng không thể tìm thấy trong một đoạn mã sạch đẹp để cắt và dán.
Đoạn mã này có một số lợi thế:
Cách sử dụng:
Nếu bạn đã di chuyển toàn bộ một trang thì trên máy chủ cũ sẽ dừng trang gốc và tạo một trang khác với tệp này làm tệp index.html mặc định trong thư mục gốc. Chỉnh sửa cài đặt trang để bất kỳ lỗi 404 nào được chuyển hướng đến trang index.html này. Điều này bắt bất cứ ai truy cập trang web cũ với một liên kết vào một trang cấp phụ, v.v.
Bây giờ, hãy chuyển đến thẻ script mở và chỉnh sửa địa chỉ web oldsite và newSite và thay đổi giá trị giây nếu cần.
Lưu và bắt đầu trang web của bạn. Công việc đã hoàn thành - thời gian cho một ly cà phê.
<!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>
Chuyển hướng bằng cách sử dụng JavaScript, <noscript>
trong trường hợp JS bị vô hiệu hóa.
<script>
window.location.replace("https://google.com");
</script>
<noscript>
<a href="https://google.com">Click here if you are not redirected automatically.</a>
</noscript>
Sử dụng mã này:
<meta http-equiv="refresh" content="0; url=https://google.com/" />
Hãy chú ý: đặt nó trong thẻ đầu.
Bạn có thể làm điều đó trong javascript:
location = "url";
Bạn có thể sử dụng cái này
<meta http-equiv="refresh" content="0; url=http://newpage.com/" />