сделать - Перенаправление с HTML-страницы




редирект с одной страницы на другую (17)

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


JavaScript

<script language="javascript">
    window.location.href = "http://example.com"
</script>

Метатег

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


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

Для PHP:

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

Вы можете использовать «перенаправление» META :

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


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

Для поддержки браузеров с отключенным JavaScript добавьте метаданные перенаправления HTML в элемент noscript . noscript мета-редирект в 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://.com/"/>
<noscript>
    <meta http-equiv="refresh" content="0; URL=https://.com/">
</noscript>
<!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]-->
<script type="text/javascript">
    var url = "https://.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=https://google.com/" />

Пожалуйста, обратите внимание: положите его в верхнюю бирку.


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

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

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

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

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

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

Примечание. Поместите его в головную часть.

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

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

Появится как

Redirect

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


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

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

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

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

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

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

window.location = "URL"


Это сумма всех предыдущих ответов плюс дополнительное решение с использованием HTTP Refresh Header через .htaccess

1. HTTP Refresh Header

Прежде всего, вы можете использовать .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

Вы можете использовать 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>

Ресурсы


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

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

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

Я обнаружил проблему во время работы с приложением 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>

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


<!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>




html-head