从HTML页面重定向

这篇博客探讨了多种HTML页面重定向的方法,包括使用HTTP刷新标头、Meta Refresh、JavaScript重定向以及301和302重定向。讨论了各种方法的优缺点,如JavaScript重定向对禁用JS用户的兼容性,以及301重定向对于SEO的影响。还提供了具体的代码示例和注意事项,以帮助开发者实现无缝的页面跳转。
摘要由CSDN通过智能技术生成

是否可以设置基本HTML页面以在加载时重定向到另一个页面?


#1楼

最好设置301重定向 。 请参阅Google的网站管理员工具文章301重定向


#2楼

只是为了好的措施:

<?php
header("Location: example@example.com", TRUE, 303);
exit;
?>

确保脚本上方没有回声,否则将被忽略。 http://php.net/manual/en/function.header.php


#3楼

你应该使用JavaScript。 将以下代码放在head标签中:

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

#4楼

适用于所有类型页面的简单方法只是在头部添加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>

#5楼

这是以前每个答案的总结,以及通过.htaccess使用HTTP刷新标头的附加解决方案

1. HTTP刷新标头

首先,您可以使用.htaccess来设置这样的刷新标头

Header set Refresh "3"

这是在PHP中使用header()函数的“静态”等价物

header("refresh: 3;");

请注意,每个浏览器都不支持此解决方案。

2. JavaScript

使用备用网址

<script>
    setTimeout(function(){location.href="http://example.com/alternate_url.html"} , 3000);
</script>

没有备用网址:

<script>
    setTimeout("location.reload(true);",timeoutPeriod);
</script>

通过jQuery:

<script>
    window.location.reload(true);
</script>

3. Meta Refresh

当JavaScript和重定向标头的依赖项不受欢迎时,您可以使用元刷新

使用备用网址:

<meta http-equiv="Refresh" content="3; url=http://example.com/alternate_url.html">

没有备用网址:

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

资源


#6楼

我使用一个脚本将用户从index.html重定向到Login Page的相对 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>

#7楼

页面加载后,会触发init函数并重定向页面:

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

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

#8楼

我在使用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>

这似乎适用于我的每一种情况。


#9楼

如果您期待遵循现代Web标准,则应避免使用纯HTML元重定向。 如果无法创建服务器端代码,则应选择JavaScript重定向

要支持禁用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 -->

#10楼

剃刀引擎延迟5秒:

<meta http-equiv="Refresh"
         content="5; url=@Url.Action("Search", "Home", new { id = @Model.UniqueKey }))">

#11楼

您可以通过HTTP状态码301或302自动重定向。

对于PHP:

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

#12楼

您不需要任何JavaScript代码。 将其写在HTML页面的<head>部分:

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

只要页面加载0秒,您就可以转到您的页面。


#13楼

只需使用body标签的onload事件:

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

#14楼

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

#15楼

使用此代码:

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

请注意: 把它放在头标签中。


#16楼

这是一个重定向解决方案,包含我想要的所有内容,但无法在一个漂亮的干净片段中找到剪切和粘贴。

此代码段具有许多优点:

  • 让你捕获并保留人们在其网址上的任何查询字符串
  • 使链接unqiue以避免不必要的缓存
  • 允许您通知用户新旧站点名称
  • 显示可设置的倒计时
  • 可以用于深度链接重定向作为保留参数

如何使用:

如果迁移了整个站点,则在旧服务器上停止原始站点,并使用此文件创建另一个站点作为根文件夹中的默认index.html文件。 编辑站点设置,以便将任何404错误重定向到此index.html页面。 这会捕获访问旧网站的任何人,并链接到子级别页面等。

现在转到开始脚本标记并编辑oldsite和newSite Web地址,并根据需要更改秒值。

保存并启动您的网站。 完成工作 - 喝咖啡的时间。

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


#17楼

据我所知,到目前为止,我在这个问题上看到的所有方法似乎都将旧位置添加到历史中。 要重定向页面,但在历史记录中没有旧位置,我使用replace方法:

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

#18楼

尝试使用:

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

注意:将其放在头部。

此外,对于较旧的浏览器,如果您添加快速链接,以防它无法正确刷新:

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

将显示为

重定向

这仍然允许您通过额外点击到达您要去的地方。


#19楼

JavaScript的

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

元标记

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

#20楼

您可以使用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


#21楼

放置在头部内部的以下元标记将告诉浏览器重定向:

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

将秒替换为重定向前等待的秒数,并将URL替换为您希望其重定向到的URL。

或者,您可以使用JavaScript重定向。 将其放在页面上任何位置的脚本标记内:

window.location = "URL"

#22楼

我会使用metaJavaScript代码 ,并且会有一个链接以防万一。

<!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状态代码。 这可以通过使用Apache的 .htaccess文件或使用WordPress的众多插件轻松完成。 我相信所有主要内容管理系统都有插件。 此外,如果您的服务器上安装了重定向,则cPanel可以非常轻松地配置301重定向。


#23楼

将以下代码放在<head>部分:

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

#24楼

你可以用javascript做到这一点:

location = "url";

#25楼

将以下代码放在HTML代码的<HEAD>和</ HEAD>标记之间:

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

上述HTML重定向代码会立即将访问者重定向到其他网页。 content="0;可能会更改为您希望浏览器在重定向之前等待的秒数。


#26楼

还会添加一个规范链接来帮助您的SEO人员:

<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值