<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>
<!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>
一个正确的客户端URL redirect代码看起来像这样(使用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 回答
您可以通过HTTP状态代码301或302自动重定向 .
对于PHP:
我使用一个脚本将用户从index.html重定向到Login Page
您不需要任何JavaScript代码 . 将其写入HTML页面的
<head>
部分:只要页面加载0秒,您就可以转到您的页面 .
适用于所有类型页面的简单方法只是在头部添加
meta
标记:尝试使用:
注意:将其放在头部 .
此外,对于较旧的浏览器,如果您添加快速链接,以防它无法正确刷新:
<p><a href="http://example.com/">Redirect</a></p>
将显示为
Redirect
这仍然允许您通过额外点击到达您要去的地方 .
最好设置一个301 redirect . 请参阅Google的网站管理员工具文章301 redirects .
只是为了好的措施:
确保脚本上方没有回声,否则将被忽略 . http://php.net/manual/en/function.header.php
将以下代码放在HTML代码的<HEAD>和</ HEAD>标记之间:
上述HTML重定向代码会立即将访问者重定向到其他网页 .
content="0;
可能会更改为您希望浏览器在重定向之前等待的秒数 .我在使用jQuery Mobile应用程序时发现了一个问题,在某些情况下我的Meta标头标签不会自动为每个页面读取 Headers ,因此将JavaScript放在那里除非将其复杂化,否则也无效 . 我发现在这种情况下最简单的解决方案是将JavaScript重定向直接放入文档正文中,如下所示:
这对我来说似乎适用于所有情况 .
我会使用meta和JavaScript代码,并且会有一个链接以防万一 .
为了完整起见,我认为最好的办法是尽可能使用服务器重定向,因此请发送301状态代码 . 使用Apache通过
.htaccess
文件或使用WordPress的众多插件很容易做到这一点 . 我相信所有主要内容管理系统都有插件 . 此外,如果您的服务器上安装了重定向,则cPanel可以非常轻松地配置301重定向 .你应该使用JavaScript . 将以下代码放在head标签中:
这是一个重定向解决方案,包含我想要的所有内容但在一个漂亮的干净片段中找不到剪切和粘贴 .
这个片段有许多优点:
允许您捕获并保留人们在其URL上的任何查询字符串
使链接unqiue以避免不必要的缓存
允许您通知用户新旧站点名称
显示可设置的倒计时
可用于深度链接重定向,因为保留了参数
How to use:
如果迁移了整个站点,则在旧服务器上停止原始站点,并使用此文件创建另一个站点作为根文件夹中的默认index.html文件 . 编辑站点设置,以便将任何404错误重定向到此index.html页面 . 这会捕获访问旧网站的任何人,并链接到子级别页面等 .
现在转到开始脚本标记并编辑oldsite和newSite Web地址,并根据需要更改秒值 .
保存并启动您的网站 . 完成工作 - 喝咖啡的时间 .
这是以前每个答案的总结,再加上使用HTTP刷新标头通过.htaccess的附加解决方案
1. HTTP Refresh Header
首先,您可以使用.htaccess来设置这样的刷新标头
这是"static"相当于在 PHP 中使用
header()
函数请注意,每个浏览器都不支持此解决方案 .
2. JavaScript
使用备用URL:
没有备用网址:
通过jQuery:
3. Meta Refresh
当不需要依赖JavaScript和重定向标头时,您可以使用元刷新
使用备用网址:
没有备用网址:
使用
<noscript>
:Optionally
根据Billy Moon的建议,如果出现问题,您可以提供刷新链接:
如果您未自动重定向:
<a href='http://example.com/alternat_url.html'>Click here</a>
Resources
Wikipedia Meta refresh
The Performance Impact of META REFRESH
Refresh (reload) a page once using jQuery?
页面加载后,将立即触发
init
函数并重定向页面:你可以使用 META "redirect":
或 JavaScript 重定向(请注意,并非所有用户都启用了JavaScript,因此请始终为其准备备份解决方案)
但如果你有选择,我宁愿推荐使用 mod_rewrite .
使用此代码:
Please pay attention: 把它放在头标签中 .
将以下代码放在
<head>
部分中:只需使用body标签的onload事件:
我会 also 添加一个规范链接以帮助您的SEO人:
放置在头部内部的以下元标记将告诉浏览器重定向:
将秒替换为重定向前等待的秒数,并将URL替换为您希望其重定向到的URL .
或者,您可以使用JavaScript重定向 . 将其放在页面上任何位置的脚本标记内:
据我所知,到目前为止我所看到的这个问题的所有方法似乎都将旧位置添加到历史中 . 要重定向页面,但在历史记录中没有旧位置,我使用
replace
方法:JavaScript
元标记
Razor engine延迟5秒:
如果您期望遵循现代Web标准,则应避免使用纯HTML元重定向 . 如果无法创建服务器端代码,则应选择 JavaScript redirect .
要支持禁用JavaScript的浏览器,请将HTML元重定向行添加到
noscript
元素 .noscript
嵌套元重定向与canonical
标记相结合也有助于您的搜索引擎排名 .如果您想避免重定向循环,则应使用
location.replace()
JavaScript函数 .一个正确的客户端URL redirect代码看起来像这样(使用Internet Explorer 8和更低的修复程序,没有延迟):