Перенаправление страницы HTML
можно ли настроить базовую HTML-страницу для перенаправления на другую страницу при загрузке?
25 ответов:
попробуйте использовать:
<meta http-equiv="refresh" content="0; url=http://example.com/" />
Примечание: поместите его в разделе head.
дополнительно для старых браузеров, если вы добавляете быструю ссылку в случае, если она не обновляется правильно:
<p><a href="http://example.com/">Redirect</a></p>
будет
Это все равно позволит вам добраться туда, куда вы идете с дополнительным щелчком мыши.
Я бы использовал оба мета и код 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 перенаправления, если они установлены на вашем сервере.
JavaScript
<script language="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"/>
это сумма всех предыдущих ответов плюс дополнительное решение с использованием заголовка HTTP Refresh via .htaccess
1. Заголовок обновления через HTTP
прежде всего, вы можете использовать .htaccess для установки заголовка обновления, как это
Header set Refresh "3"
это "статический" эквивалент использования на 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>
ресурсы
следующий мета-тег, помещенный между внутри головы, скажет браузеру перенаправить:
<meta http-equiv="Refresh" content="seconds; url=URL">
замените секунды на количество секунд ожидания перед перенаправлением и замените URL на URL, на который вы хотите его перенаправить.
кроме того, вы можете перенаправить с помощью JavaScript. Поместите это внутри тега скрипта в любом месте страницы:
window.location = "URL"
было бы лучше установить 301 редирект. См. статью инструменты веб-мастера Google 301 редирект.
если вы с нетерпением ждете, чтобы следовать современным веб-стандартам, вы должны избегать простых HTML мета перенаправления. Если вы не можете создать код на стороне сервера, вы должны выбрать JavaScript redirect вместо.
чтобы поддержка JavaScript отключен-браузеры добавить HTML мета линия редирект на
noscript
элемент. Элементnoscript
вложенные мета редирект в сочетании сcanonical
тег поможет ваш рейтинг в поисковых системах, а также.если вы хотите избежать перенаправления петли, вы должны использовать
location.replace()
функции JavaScript.надлежащая клиентская сторона url redirect код выглядит так (с 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" content="0; url=http://new.example.com/address" />
или JavaScript redirect (обратите внимание, что не у всех пользователей включен 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>
поместите следующий код между тегами
и вашего 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"); ?>
просто для хорошей мерой:
<?php header("Location: example@example.com", TRUE, 303); exit; ?>
убедитесь, что над сценарием нет эха, иначе он будет проигнорирован. http://php.net/manual/en/function.header.php
бритва двигатель для 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>
просто используйте событие onload тега body:
<body onload="window.location = 'http://example.com/'">
Я использую скрипт, который перенаправляет пользователя от индекса.html для входа на страницу
<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>
вам не нужен код JavaScript для этого. Напишите это в
<head>
раздел HTML страницы:<meta http-equiv="refresh" content="0; url=example.com" />
Как только страница загрузится в 0 секунд, вы можете перейти на вашу страницу.
насколько я понимаю, все методы, которые я видел до сих пор для этого вопроса, похоже, добавляют старое местоположение в историю. Чтобы перенаправить страницу, но не иметь старого местоположения в истории, я использую
replace
способ:<script> window.location.replace("http://example.com"); </script>
Это решение для перенаправления со всем, что я хотел, но не смог найти в хорошем чистом фрагменте, чтобы вырезать и вставить.
этот фрагмент имеет ряд преимуществ:
- позволяет поймать и сохранить любые параметры querystring люди имеют на их url
- делает ссылку unqiue, чтобы избежать нежелательного кэширования
- позволяет информировать пользователей о старых и новых названий сайта
- показывает установленный обратный отсчет
- можно использовать для прямая ссылка перенаправляет как сохраняет параметры
как использовать:
если Вы перенесли весь сайт, то на старом сервере остановите исходный сайт и создайте другой с этим файлом в качестве индекса по умолчанию.HTML-файл в корневой папке. Измените настройки сайта так, чтобы любая ошибка 404 перенаправлялась на этот индекс.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>