整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

html网页重定向的办法

接上代码

<!doctype html>
<html>
<head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,maximum-scale=1,user-scalable=no"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
    <meta name="renderer" content="webkit"/>
    <meta http-equiv="refresh" content="0;url=static/ck600mgr/pages/index.html">
    <title></title>
</head>
<body>
</body>
</html>


301,302,303,307

301是永久重定向,常用的场景是使用域名跳转。

比如,我们访问 http://www.zhihu.com 会跳转到 https://www.zhihu.com,发送请求之后,就会返回301状态码,然后返回一个location,提示新的地址,浏览器就会拿着这个新的地址去访问。

301.png

302是临时重定向,用来做临时跳转。接着上面的例子,重定向到 https://www.zhihu.com 的请求又会通过302重定向到 https://www.zhihu.com/signup?next=%2F

302.png

不过,看上去301和302都是代表重定向的意思。那具体有啥区别呢?

http 1.0规范中有2个重定向——301和302,在http 1.1规范中存在4个重定向——301、302、303和307。

其中301在http 1.0以及http 1.1中都表示永久重定向,就不讨论了。

那302呢?

在http1.0中,302的规范是这样的:

原请求是post,则不能自动进行重定向;原请求是get,可以自动重定向。

但是浏览器和服务器的实现并没有严格遵守HTTP中302的规范,服务器不加遵守的返回302,浏览器即便原请求是post也会自动重定向,导致规范和实现出现了二义性。

所以HTTP 1.1中将302的规范细化成了303和307

303和307

继承了HTTP 1.0中302的实现(即原请求是post,也允许自动进行重定向,结果是无论原请求是get还是post,都可以自动进行重定向)。

307则继承了HTTP 1.0中302的规范(即如果原请求是post,则不允许进行自动重定向,结果是post不重定向,get可以自动重定向)。

作为SEOER我想大家一定会遇到这样的情况,有时公司业务需要要更换域名,可是每每遇到此问题,我想很多人会和我之前一样一脸的懵逼吧!心想如何更换域名了?更换域名如何把网站原来的权重导到新域名了?其实这些如果公司有程序员,那么这些问题将不是问题。因为你只需要告诉他我需要做个重定向,不一会儿人家就帮你搞定了,自己也轻松许多。但是往往许多小型公司是没有程序员的,那也就是说需要自己我们来做,那么如何制作301重定向和302重定向呢?别急,请我慢慢道来。

在开始制作301和302重定向之前先说说什么是301重定向,什么又是302重定向。301重定用专业点的话说就是指永久性页面移走,一种非常重要的“自动转向”技术;302重定向指的是“暂时性页面转移”技术。说简单点可以把他们理解为永久重定向和临时性重定向。

理解了301重定向和302重定向,我们在说说什么情况需要制作301重定向,什么情况下要用302重定向。经常用到301重定向的情况如下:

1.网站网址URL的标准化

2.启用了新域名

3.网站内部结构调整

4.删除某些超链接的时候,如导航

经常用到302重定向的情况如下:

1.网站临时性维护

2.网站举行活动的时候需要指向到活动页面

301重定向制作方法:首先在网站根目录新建一个文件“.htaccess”文件

1.利用mod_rewrite技术,代码如下(将此代码写入.htaceess)

RewriteEngine on

RewriteRule^(.*)$ http://www.seochat.org/ [R=301,L]

2.Apache服务器服务器下设置代码

(1)方法1

<VirtualHost *>

ServerName [URL]www.10flash.net[/URL]

RewriteEngine on

RewriteRule^/(.*)$ [URL]http://www.seochat.org/ [URL] [R=301,L]

</VirtualHost>

(2)方法2

<VirtualHost 219.133.X.X>

Redirect / http://www.seochat.org/

ServerName www.10flash.net

</VirtualHost>

3.IIS服务器下设置方法

因为IIS服务器有专门管理的应用,所以不用写代码,直接打开Internet信息服务管理器,然后在需要重新定向的网页或者目录上点击右键,选择“重定向到URL”,在“重定向到”输入框中输入你要跳转到的目标网页URL地址,再选中“资源的永久重定向”选项,最后点击应用即可,切记最后要点击”应用“。

4.高级语言实现方法(ASP/PHP/ASP.NET)

ASP:

Response.Status=”301 Moved permanently”

Response. AddHeader “Location”,”http://www.seochat.org/”

Response.End

PHP:

header(“HTTP/1.1 301 Moved permanently”);

header(“Location: http://www.seochat.org/”);

Exit();

302重定向设置方法

(1)meta重定向(注意时间一定要设置3秒以上)

在网页头部模板中设置meta标签的http-equiv属性值以及内容来实现重定向。如在页头部分加上代码<Metahttp-equiv=”refresh” content=”3;url=http://www.seochat.org”>,这样做当打开此页面3秒后将自动跳转到网站www.seochat.org。

(2)JavaScript重定向设置方法(将此代码写在需要重定向的页面上)

<script language=”javascript”>

<!-

Window.location.href=http://www.seochat.org;

//-->

</script>

这段代码表示的是把你所要重定向的页面重定向到http://www.seochat.com这个页面上

写在最后:今天就分享到这里,如有问题,请下面留言,我都会帮大家统统解答的。对了还有这些做完后不要忘了使用站长工具的状态码检查功能检查,如何检查,非常简单,把你重定向之前的页面url复制出来后放到工具查询框,看返回状态码是不是301或者302。再啰嗦一句以后小编分享时间规定为3天一篇,最后谢谢亲们的支持。

天下班的时候看到了一些重定向的基础知识,也算开了眼界。以前也经常使用301和302,但从来没有使用过和了解过其他的3XX的状态码,发现原来里面涉及的知识和解决的问题的还不少。

重定向的流程

浏览器首先访问服务器A的URL,服务器A返回带着location为B的URL的 header 和3XX的状态码,浏览器读取响应的3XX状态码,获取到头部的 location,然后跳转到服务器B的URL。

需要知道的,跳转是浏览器发起的。如果服务器给一个非浏览器的终端返回了3XX的状态码,那有可能是无法完成重定向的。

某年,有个应该用已经运行很很长时间了,PHP写的API接口。一直使用的是HTTP,经常被劫持,然后领导想替换成加密的HTTPS,但是客户端不能发版。后来服务器端就考虑把全站的接口从HTTP 302到HTTPS,讨论这个方案的可行性。如果知道上面的流程和知识这个方案立马就PASS了。

永久重定向

表示资源永久性的跳转到新的URL。

一个比较常见的案例就是老站迁移到新站,老站直接关闭后,老站的页面已经被搜索引擎收录了,这个时候使用永久重定向方案。

永久重定向两个状态码

301,重定向请求通常会使用GET方法,不管原请求使用的是何种方法。

308,为了补充301.重定向必须使用原请求的方法和包体访问。

临时重定向

表示资源只是临时跳转到新的URL

临时重定向一共有五个状态码,常用也就相对应的两个302和307.

302,重定向请求通常会使用GET方法,不管原请求使用的是何种方法。

303,并不表示资源变更,只是表示用新的URL的响应代替原请求。不管原请求使用的是何种方法。基本跟302一致,所以市面很少用303,都是使用302.

307,为了补充302.重定向必须使用原请求的方法和包体访问。

百度就是使用的307跳转,浏览器输入http://www.baidu.com 会307 到https://www.baidu.com

300,该请求有多种可能的响应,浏览器可以选择它们其中的一个。服务器没有任何标准可以遵循去代替用户来进行选择。

304,告诉浏览器,所请求的内容距离上次访问并没有变化。 可以直接从浏览器缓存里获取该资源。

后面两种不常用。

使用比较多就是301 302 307 308

循环重定向的问题

ERRTOOMANY_REDIRECTS

这个报错挺常见的。如果访问A页面然后重定向访问B,然后B又让重定向访问A,这样就是循环重定向了。多次重定向也会报这个错。

生产环境遇到过一次,有一次日志上发现有ERRTOOMANY_REDIRECTS的报错,但是在Nginx的配置上没有找到 3XX的跳转代码啊,那怎么循环跳转的。后来看到了这段配置

 location 
/
 
{
 try_files $uri $uri
/
 
/
index
.
html$is_args$args
;
 
}

后来发现根目录下没有index.html,uri不存在,然后uri/目录也不存在,最后发起一个内部子请求到index.html.index.html不存在,又到location,反复重定向。最后报错 ERRTOOMANY_REDIRECTS。