从超文本标记语言页面重定向

是否可以设置基本的超文本标记语言页面以在加载时重定向到另一个页面?

3478810 次浏览

尝试使用:

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

注意:将其放在<head>部分。

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

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

将显示为

重定向

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

javascript

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

元标签

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

您可以使用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,如果你有选择的话。

下面的元标记,放置在头部之间,将告诉浏览器重定向:

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

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

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

window.location = "URL"

我会同时使用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的众多插件来完成。我相信所有主要的内容管理系统也有插件。此外,如果您的服务器上安装了301重定向,cPanel的配置非常简单。

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

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

将以下代码放在超文本标记语言代码的和标记之间:

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

上面的超文本标记语言重定向代码会立即将您的访问者重定向到另一个网页。content="0;可能会更改为您希望浏览器在重定向前等待的秒数。

我会添加一个规范链接来帮助你的seo人:

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

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

只是为了好的措施:

<?phpheader("Location: http://example.com", true, 302);exit;?>

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

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

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

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

这是之前所有答案的总结,以及通过. htaccess使用HTTP Re新鲜标头的附加解决方案

1. HTTP刷新标头

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

Header set Refresh "3"

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

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

当不需要对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>

资源

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

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

<!DOCTYPE html><html><head><title>Example</title><script>function init(){window.location.href = "www.wherever.com";}</script></head>
<body onload="init()"></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>

这似乎在任何情况下对我都有效。

如果您希望遵循现代Web标准,则应避免纯超文本标记语言元重定向。如果您无法创建服务器端代码,则应选择JavaScript重定向

为了支持禁用JavaScript的浏览器,将超文本标记语言元重定向行添加到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 -->

剃刀发动机对于5秒延迟:

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

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

对于PHP:

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

您不需要为此编写任何JavaScript代码。在超文本标记语言页面的<head>部分编写此内容:

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

一旦页面加载为0秒,您就可以转到您的页面。

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

<body onload="window.location = 'http://example.com/'">
<!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>

这是一个重定向解决方案,我想要的一切,但我找不到一个干净的片段来剪切和粘贴。

这个代码片段有很多优点:

  • 允许您捕获并保留人们在其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>

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

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

你可以在JavaScript中这样做:

location = "url";