Перенаправление со страницы HTML - PullRequest
1483 голосов
/ 23 марта 2011

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

Ответы [ 26 ]

2067 голосов
/ 24 марта 2011

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

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

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

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

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

Появляется как

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

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

1071 голосов
/ 24 марта 2011

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

117 голосов
/ 24 марта 2011

JavaScript

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

метатег

<meta http-equiv="refresh" content="0;url=http://example.com">
39 голосов
/ 06 февраля 2012

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

<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish"/>
29 голосов
/ 06 ноября 2014

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

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

Ресурсы

27 голосов
/ 24 марта 2011

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

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

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

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

window.location = "URL"
26 голосов
/ 21 февраля 2013

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

25 голосов
/ 13 сентября 2015

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

Для поддержки браузеров с отключенной поддержкой JavaScript добавьте строку HTML-перенаправления мета в элемент 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://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 -->
17 голосов
/ 24 марта 2011

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

<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 , если у вас есть возможность.

14 голосов
/ 14 апреля 2015

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

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

    <body onload="init()">
    </body>
</html>
...