Чи можна налаштувати основну сторінку 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
не рекомендується мати зв'язок, оскільки читачем екрану буде важче орієнтуватися. Посилання повинні містити текст, що описує місце призначення, щоб користувач знав, куди вони прибудуть, перш ніж слідувати за ним, і тим не менш, він взаємодіє з ним.
Я також додам канонічне посилання, щоб допомогти вашим 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 через .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>
За бажанням
Як рекомендує Біллі Мун, ви можете надати посилання для оновлення, якщо щось піде не так:
Якщо вас не переспрямовано автоматично: <a href='http://example.com/alternat_url.html'>Click here</a>
Ресурси
setTimeout
за допомогою рядка. Передайте замість функції.
Було б краще встановити переадресацію 301 . Див . Переспрямування статті 301 щодо Інструментів для веб-майстрів Google .
Якщо ви з нетерпінням чекаєте дотримання сучасних веб-стандартів, вам слід уникати звичайних мета-переадресацій HTML. Якщо ви не можете створити код на стороні сервера, вам слід вибрати переадресацію JavaScript .
Для підтримки браузерів з обмеженим JavaScript ви можете додати noscript
елемент елемента мета-переспрямування HTML . noscript
Вкладена мета редирект в поєднанні з 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 , якщо є можливість.
Розмістіть такий код між тегами <HEAD> та </HEAD> вашого HTML-коду:
<meta HTTP-EQUIV="REFRESH" content="0; url=http://example.com/index.html">
Вищенаведений код переадресації HTML моментально перенаправить відвідувачів на іншу веб-сторінку. Ви content="0;
можете змінити кількість секунд, яку ви хочете, щоб браузер зачекав, перш ніж переспрямувати.
Я виявив проблему під час роботи з додатком 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
Просто використовуйте подію завантаження тегу body:
<body onload="window.location = 'http://example.com/'">
Двигун бритви на 5 секунд затримки:
<meta http-equiv="Refresh"
content="5; url=@Url.Action("Search", "Home", new { id = @Model.UniqueKey }))">
Для цього вам не потрібен код 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. Це залучає всіх, хто має доступ до старого сайту за допомогою посилання на сторінку підрівню тощо.
Тепер перейдіть до тегу сценарію відкриття та відредагуйте веб-адреси oldsite та newSite та змініть значення секунд за потребою.
Збережіть і запустіть свій веб-сайт. Робота виконана - час на каву.
<!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>
Використовуйте цей код:
<meta http-equiv="refresh" content="0; url=https://google.com/" />
Зверніть увагу: помістіть його в тег заголовка.
Ви можете це зробити у javascript:
location = "url";
Ви можете використовувати це
<meta http-equiv="refresh" content="0; url=http://newpage.com/" />