it-swarm.com.ru

Перенаправление со страницы HTML

Можно ли настроить базовую страницу HTML для перенаправления на другую страницу при загрузке?

1479
chobo

Попробуйте использовать:

<meta http-equiv="refresh" content="0; url=http://example.com/" />

Примечание: поместите его в головной части.

Кроме того, для старых браузеров, если вы добавите быструю ссылку, если она не обновляется правильно:

<p><a href="http://example.com/">Redirect</a></p>

Появится как

Перенаправление

Это все еще позволит вам попасть туда, куда вы собираетесь, с помощью дополнительного клика.

2065
Valerij

Я бы использовал как мета , так и код 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>

Для полноты, я думаю, что лучший способ, если это возможно, это использовать перенаправления сервера, поэтому отправьте 1 код состояния. Это легко сделать с помощью файлов .htaccess, используя Apache , или с помощью многочисленных плагинов, использующих WordPress . Я уверен, что есть также плагины для всех основных систем управления контентом. Кроме того, cPanel имеет очень простую конфигурацию для переадресации 301, если она установлена ​​на вашем сервере.

1068
Billy Moon

JavaScript

<script type="text/javascript">
    window.location.href = "http://example.com";
</script>

Метатег

<meta http-equiv="refresh" content="0;url=http://example.com">
117
amit_g

Я бы также добавил каноническую ссылку, чтобы помочь вашим SEO людям:

<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish"/>
39
lrkwz

Это сумма всех предыдущих ответов плюс дополнительное решение с использованием 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>

Ресурсы

29
RafaSashi

Следующий метатег, помещенный между внутри головы, скажет браузеру перенаправить:

<meta http-equiv="Refresh" content="seconds; url=URL"> 

Замените секунды на количество секунд ожидания, прежде чем оно будет перенаправлено, и замените URL-адрес URL-адресом, на который вы хотите перенаправить его.

Кроме того, вы можете перенаправить с помощью JavaScript. Поместите это внутри тега script в любом месте страницы:

window.location = "URL"
27
Peter Olson

Было бы лучше установить 1 перенаправление . См. Статью Google Инструменты для веб-мастеров 1 перенаправление.

26
Alex K

Если вы хотите следовать современным веб-стандартам, вам следует избегать простого перенаправления мета-HTML. Если вы не можете создать код на стороне сервера, вам следует выбрать перенаправление JavaScript .

Для поддержки браузеров с отключенным JavaScript добавьте строку перенаправления мета-HTML в элемент noscript. Вложенный мета-редирект noscript в сочетании с тегом canonical также поможет вашему ранжированию в поисковых системах.

Если вы хотите избежать циклов перенаправления, вам следует использовать функцию JavaScript location.replace().

Правильный код на стороне клиента RL-перенаправление выглядит следующим образом (с 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 -->
25
Patartics Milán

Вы можете использовать META "redirect":

<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, если у вас есть опция.

17
Czechnology

Как только страница загружается, запускается функция init и страница перенаправляется:

<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
        <script>
            function init()
            {
               window.location.href = "www.wherever.com";
            }
        </script>
    </head>

    <body onload="init()">
    </body>
</html>
14
kkk

Поместите следующий код между тегами <HEAD> и </ HEAD> вашего HTML-кода:

<meta HTTP-EQUIV="REFRESH" content="0; url=http://example.com/index.html">

Приведенный выше HTML-код перенаправления мгновенно перенаправит ваших посетителей на другую веб-страницу. content="0; может быть изменен на количество секунд, которое вы хотите, чтобы браузер ждал перед перенаправлением.

10
Muhammad Saqib

Поместите следующий код в раздел <head>:

<meta http-equiv="refresh" content="0; url=http://address/">
9
Sebi

Я обнаружил проблему при работе с приложением jQuery Mobile , где в некоторых случаях мой мета-тег заголовка не достиг бы перенаправления должным образом (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>

Это, кажется, работает в каждом случае для меня.

9
Scotsman

Простой способ, который работает для всех типов страниц, это просто добавить тег 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>
8
P. BANERJEE

Вы должны использовать JavaScript. Поместите следующий код в теги головы:

<script type="text/javascript">
 window.location.assign("http://www.example.com")
</script>
7
kriscross07

Вы можете автоматически перенаправить по HTTP-коду 301 или 302.

Для PHP:

<?php
    Header("HTTP/1.1 301 Moved Permanently");
    Header("Location: http://www.redirect-url.com");
?>
7
Vô Vị

Я использую скрипт, который перенаправляет пользователя с index.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>
6
Zolfaghari

Просто используйте событие onload тега body:

<body onload="window.location = 'http://example.com/'">
6
pat capozzi

Просто для хорошей меры:

<?php
header("Location: [email protected]", TRUE, 303);
exit;
?>

Убедитесь, что над сценарием нет эхо, иначе оно будет проигнорировано. http://php.net/manual/en/function.header.php

6
Edward
<!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>
5
Pirate of Marmara

двигатель бритвы с 5-секундной задержкой:

<meta http-equiv="Refresh"
         content="5; [email protected]("Search", "Home", new { id = @Model.UniqueKey }))">
5
JoshYates1980

Вам не нужен код JavaScript для этого. Запишите это в разделе <head> HTML-страницы:

<meta http-equiv="refresh" content="0; url=example.com" />

Как только страница загрузится в 0 секунд, вы можете перейти на свою страницу.

4
Yash Jain

Насколько я понимаю, все методы, которые я видел до сих пор в этом вопросе, похоже, добавляют старое место в историю. Чтобы перенаправить страницу, но у меня нет старого местоположения в истории, я использую метод replace:

<script>
    window.location.replace("http://example.com");
</script>
3
Paul Ogilvie

Это решение для перенаправления со всем, что я хотел, но не смог найти в хорошем чистом фрагменте для вырезания и вставки.

Этот фрагмент имеет ряд преимуществ:

  • позволяет вам ловить и сохранять любые параметры строки запроса, которые есть у людей на их URL
  • делает ссылку необязательной, чтобы избежать нежелательного кэширования
  • позволяет информировать пользователей о старых и новых именах сайтов
  • показывает устанавливаемый обратный отсчет
  • может использоваться для переадресации с глубокими связями, так как сохраняет параметры

Как использовать:

Если вы перенесли весь сайт, то на старом сервере остановите исходный сайт и создайте другой с этим файлом в качестве файла 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>&nbsp;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>
2
Vanquished Wombat

Используйте этот код:

<meta http-equiv="refresh" content="0; url=https://google.com/" />

Обратите внимание: поместите его в тег head.

0
AmerllicA

Вы можете сделать это в JavaScript:

location = "url";
0
GameMaster1928