石家庄网站建设公司众益网络,专业提供企业网站建设、营销型网站建设、商城网站建设、品牌网站建设、响应式网站建设、手机网站建设、网站改版、竞价托管、小程序开发等服务!

网站建设

153-691-89891

新闻动态

将想法与焦点和您一起共享

石家庄网站建设中域名301重定向页面跳转

来源:www.zhongyiweb.com 时间:2018-12-10 17:28 浏览次数:

 
当网站地址变更时,需要将旧域名301重定向到新的URL地址,实际上就是把旧地址的访问请求重新引导到新域名上。301永久重定向无论是对用户还是搜索引擎都是比较友好的,对SEO完全没有不好的一面。通过旧网站的关键词排名和PR等级都会传递给新网站,网站更换了域名,用域名301永久重定向的方式告诉搜索引擎本网页已经永久性转移到新的域名,避免搜索引擎无法找到页面,网站对于搜索引擎相对比较友好。
域名重定向的好处有利于用户体验和搜索引擎抓取,301重定向跳转对搜索引擎的好处有、增加域名权重、对网页收录的优化、有利于网页PR传递、可促进搜索引擎优化效果、对用户体验表示友、避免造成404错误页面。使用301重定向把地址指向新的域名后,搜索引擎只对对新域名进行索引,同时将旧地址原有的链接转移搭配新域名下。正确的使用301永久性重定向命,对排名不会产生任何影响。
石家庄网站建设中域名301重定向页面跳转
一、域名301重定向什么情况下使用
1、网站域名变更时,使用301永久重定向将旧域名重定向至新域名,挽回关键词排名和流量损失。
2、因某些原因需要删除网站中的个别目录时,比如我要删除众益网站建设的一级导航,这种情况就可以使用301永久重定向到网站首页。
3、多个域名需要指向同一个站点时,打算实现网址规范化,通过301永久重定向可以实现。
二、http中的重定向和请求转发的区别(包含JS跳转方法)
很简单,重定向是客户端行为,转发是服务器行为。转发属于一次请求,重定向属于第2次请求,转发地址栏不会发生改变,重定向地址栏会改变,转发在项目内,重定向 可以转到项目外。当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。
石家庄网站建设中域名301重定向页面跳转
1、调用方式 
我们知道,在servlet中调用转发、重定向的语句如下:
request.getRequestDispatcher("new.jsp").forward(request, response);//转发到new.jsp
response.sendRedirect("new.jsp");//重定向到new.jsp
在jsp页面中你也会看到通过下面的方式实现转发:
当然也可以在jsp页面中实现重定向:
<%response.sendRedirect("new.jsp");//重定向到new.jsp%>
2、本质区别
解释一  
一句话,重定向是客户端行为,转发是服务器行为。为什么这样说呢,这就要看两个动作的工作流程:
转发过程:客户浏览器发送http请求----》web服务器接受此请求--》调用内部的一个方法在容器内部完成请求处理和转发动作----》将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
重定向过程:客户浏览器发送http请求----》web服务器接受后发送302状态码响应及对应新的location给客户浏览器--》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址----》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
解释二
重定向,其实是两次request, 
第一次,客户端request   A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。
举例:response.sendRedirece(“loginsucess.jsp”)
请求转发是服务器内部把对一个request/response的处理权,移交给另外一个 
对于客户端而言,它只知道自己最早请求的那个A,而不知道中间的B,甚至C、D。 传输的信息不会丢失。
举例:
//Request Dispatcher dis=request.getRequestDispatcher(“loginsuccess”)
//dis.forward(request,response):
石家庄网站建设中域名301重定向页面跳转
前言
html ,js 可以实现页面跳转。
jsp , asp, php 也有各自页面跳转与重定向的方式。
下文针对js 和jsp 的页面跳转实现方式进行一个总结。
html 页面跳转方式
可以使用html 的meta 标签实现页面的跳转。
[html] view plain copy
1.   
2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
3.   
4.   
5. 
 New Document   
6. <META NAME="Author" CONTENT="oscar999">  
7. <meta http-equiv="refresh" content="0; URL=http://www.haotui.com.cn">  
8. 
10.   
11.   
12.   
13. This is Test Page  
14.   
15.   
这种用法比较常使用在:
新旧系统升级的状况下, 暂时保留旧系统,通过域名进入时自动转到新系统中。
JS 页面跳转方式
1. 使用window.location = "newurl"
[html] view plain copy
1.   
2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
3.   
4.   
5. 
 New Document   
6. <META NAME="Author" CONTENT="oscar999">  
7.   
8.   
9.   
10.   
11. This is Test Page.  
12. 
15.   
16.   
也可以使用 window.location.href = "http://www.haotui.com.cn";
2. 使用 window.navigate
[html] view plain copy
1. 
3.  window.loction.replace方式实现页面跳转
有3个jsp页面(1.aspx, 2.aspx, 3.aspx),进系统默认的是1.aspx,当我进入2.aspx的时候, 2.aspx里面用indow.location.replace("3.aspx");
与用window.location.href ("3.aspx");
 
从用户界面来看是没有什么区别的,但是当3.aspx页面有一个"返回"按钮,调用window.history.go(-1); wondow.history.back();方法的时候,一点这个返回按钮就要返回2.aspx页面的话,区别就出来了,当用 window.location.replace("3.aspx");连到3.aspx页面的话,3.aspx页面中的调用 window.history.go(-1);wondow.history.back();方法是不好用的,会返回到1.aspx。
 
JSP跳转方式
 
JSP 跳转方式大约有三种:
 
1. response.sendRedirect(“newurl”);
 
 -- 此语句前不允许有out.flush(),如果有,会有异常:
java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client.
at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
 
 --跳转后浏览器地址栏变化
 
 --如果要跳到不同主机下,跳转后,此语句后面的语句会继续执行,如同新开了线程,但是对response的操作已经无意义了
 
   如果要跳到相同主机下,此语句后面的语句执行完成后才会跳转;
 
2. response.setHeader("Location","newurl");
 
[html] view plain copy
 
1. response.setStatus(302);  
 
2. response.setHeader("location","newurl");  
 
这种使用方式要结合 setStatus(302),  302 这个状态码就是告诉浏览器要重定向了。
 
1. 此语句前不允许有out.flush(),如果有,页面不会跳转。
 
2. 跳转后浏览器地址栏变化
 
3. 此语句后面的语句执行完成后才会跳转
 
此语句前不允许有out.flush(),如果有,会有异常:
 
跳转后浏览器地址栏不变,但是只能跳到当前主机下
 
此语句后面的语句执行完成后才会跳转  
 
跳转后得路径变为当前路径,图片不是绝对路径将无法显示
 
举例:
 
整个简单的例子:  两个文件 a.jsp 和 b.jsp .
 
[html] view plain copy
 
1.   
 
2.   
 
3. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"  
 
4.     pageEncoding="ISO-8859-1"%>  
 
5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
 
6.   
 
7.   
 
8. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
 
9. 
 
Insert title here  
10.   
 
11.   
 
12. Before: This is a.jsp! 
  
 
13. <%  
 
14.     //response.sendRedirect("b.jsp");  
 
15.   
 
16.     //response.setStatus(302);  
 
17.     //response.setHeader("location","b.jsp");  
 
18.   
 
19. %>  
 
20.   
 
21. <jsp:forward page="b.jsp"/>  
 
22. After: This is a.jsp!  
 
23.   
 
24.   
 
 
对于jsp 而言, 就需要嚼一嚼Redirect 和 forward 的差别了。
 
就字面意思而已: Redirect 翻译成重定向, forward翻译成转发。
 
类别
 
概念
 
共享数据
 
应用
 
Redirect
 
URL重新定向:可以是任意的URL
 
不能共享request里面的数据
 
一般用于用户注销登录时返回主页面和跳转到其它的网站等等
 
Forward
 
页面的转发:只能是同一个Web应用程序的其他Web组件
 
转发页面和转发到的页面可以共性request里面的数据
 
一般用于用户登录的时候根据角色转发到相应的模块等等
 
  
 
 
三、http重定向301/302/303/307
 
301 永久重定向,告诉客户端以后应从新地址访问.
 
302 作为HTTP1.0的标准,以前叫做Moved Temporarily ,现在叫Found. 现在使用只是为了兼容性的处理,包括PHP的默认Location重定向用的也是302.
 
但是HTTP 1.1 有303 和307作为详细的补充,其实是对302的细化
 
303:对于POST请求,它表示请求已经被处理,客户端可以接着使用GET方法去请求Location里的URI。
 
307:对于POST请求,表示请求还没有被处理,客户端应该向Location里的URI重新发起POST请求。
 
测试的test.html代码,发起post请求到test.php页面中
 
test.php页面分别给出3种重定向处理,都跳到test2.php
 
test2.php打印出post的结果
 
(至于怎么写..自己查手册吧,PHP发送头很容易.)
 
1.....
 
2.301 => "HTTP/1.1 301 Moved Permanently",
 
3.302 => "HTTP/1.1 302 Found",
 
4.303 => "HTTP/1.1 303 See Other",
 
5.307 => "HTTP/1.1 307 Temporary Redirect",
 
6.....
 
测试结果:
 
301,302和303的处理结果是一样的,直接跳转到test2.php,post没有内容
 
307的会重新post请求到test2.php,并且给出页面提示
 
重定向实际使用是一个响应码(301或302或303或307)和一个响应头location,当浏览器收到响应的时候check响应码是3xx,则会取出响应头中location对应的url(重定向中url的编码问题),然后将该url替换浏览器地址栏并发起另一次HTTP事务。
 
关于301、302、303、307的区别,找不到好的文章,因此打算直撸HTTP 1.0规范和HTTP 1.1规范,结合一些实际的案例和tomcat实现,来说清楚这几个状态码的差异。
 
四、 https301重定向
 
原请求访问的是http://haotui.com.cn,然后返回302location=https://haotui.com.cn,从http转到https。不过关于响应行中302状态码的描述存在争议,在下文中会详细讨论。
 
石家庄网站建设中域名301重定向页面跳转
 
五、tomcat重定向源码
 
石家庄网站建设中域名301重定向页面跳转
 
六、http详细介绍
http 1.0规范中有2个重定向——301和302,在http 1.1规范中存在4个重定向——301、302、303和307,其中302是值得讨论讨论的。
 
1、 http 1.0
 
301状态码在HTTP 1.0和HTTP 1.1规范中均代表永久重定向,对于资源请求,原来的url和响应头中location的url而言,资源应该对应location中的url。对于post请求的重定向,还是需要用户确认之后才能重定向,并且应该以post方法发出重定向请求。
 
关于post请求重定向用户确认的问题,实际上浏览器都没有实现;而且post请求的重定向应该发起post请求,这里浏览器也并不一定遵守,所以说HTTP规范的实现并未严格按照HTTP规范的语义。
 
在301中资源对应的路径修改为location的url,在SEO中并未出现问题,但是在302中就出现了302劫持问题。
 
1、301永久移动
 
被请求的资源被分配了一个新的永久URL,并且任何未来对这个资源的引用应该使用该URL来完成。具有链接编辑能力的客户端应该在可能的情况下自动地将对request-URL的引用重新链接到由服务器返回的新引用。
 
新的URL必须由response.unless中的location字段给出,如果是HEAD请求,则响应的实体主体应该包含一个带有到新URL的超链接的短信。
 
如果使用POST方法接收到301状态代码以响应请求,则用户agnet不能自动重定向请求,除非用户可以确认,否则可能会改变发出请求的条件。
 
NOts:在收到301状态码后自动重定向POST请求时,一些现有的用户代理将错误地将其更改为GET请求。
 
在http 1.0规范中,302表示临时重定向,location中的地址不应该被认为是资源路径,在后续的请求中应该继续使用原地址。
 
规范:原请求是post,则不能自动进行重定向;原请求是get,可以自动重定向;
 
实现:浏览器和服务器的实现并没有严格遵守HTTP中302的规范,服务器不加遵守的返回302,浏览器即便原请求是post也会自动重定向,导致规范和实现出现了二义性,由此衍生了一些问题,譬如302劫持,因此在HTTP 1.1中将302的规范细化成了303和307,希望以此来消除二义性。
 
补充:302劫持——A站通过重定向到B站的资源xxoo,A站实际上什么都没做但是有一个比较友好的域名,web资源xxoo存在B站并由B站提供,但是B站的域名不那么友好,因此对搜索引擎而言,可能会保存A站的地址对应xxoo资源而不是B站,这就意味着B站出了资源版权、带宽、服务器的钱,但是用户通过搜索引擎搜索xxoo资源的时候出来的是A站,A站什么都没做却被索搜引擎广而告之用户,B站做了一切却不被用户知道,价值被A站窃取了。
 
2、302暂时移动
 
被请求的资源暂时驻留在不同的URL中。因为重定向可能偶尔会被改变,所以clinet应该继续使用请求URL来作为将来的请求。
 
URL必须由响应中的位置字段给出。除非是HEAD请求,否则响应的实体主体应该包含一个带有到新URL的超链接的短注释。
 
如果使用POST方法接收到302状态码以响应请求,则除非用户能够确认,否则用户代理不能自动重定向请求,因为这可能会改变发出请求的条件。
 
注意:在收到302状态码后自动重定向POST请求时,一些现有的用户代理将错误地将其更改为GRT请求。
 
2. http 1.1
 
301和http 1.0规范中保持一致,注意资源对应的路径应该是location中返回的url,而不再是原请求地址。
 
302在HTTP 1.1中,实际上302是不再推荐使用的,只是为了兼容而作保留。规范中再次重申只有当原请求是GET or HEAD方式的时候才能自动的重定向,为了消除HTTP 1.0中302的二义性,在HTTP 1.1中引入了303和307来细化HTTP 1.0中302的语义。
 
1、302found
 
被请求的资源暂时驻留在一个不同的URL中,因为重定向可能会被改变,客户端应该继续使用请求URL来做未来的请求,这个响应只有在缓存控制或者Expires头域指示的时候才能被缓存。
 
临时URL应该由响应中的位置字段给出。如果请求方法是HEAD,响应实体应该包含一个超链接到新URL的短超文本记录。
 
如果为了响应GET或HEAD以外的请求而接收到302状态码,除非用户能够确认,否则用户代理不能自动重定向请求,因为这可能会改变发出请求的条件。
 
注意:RFC 1945和RFC 2068指定客户端不允许更改重定向的请求上的方法。但是,大多数现有的用户代理实现将302视为303响应,对位置字段值执行GET原始请求方法的状态代码303和307已经被添加用于希望明确地清楚客户端期望哪种反应的服务器。
 
303在HTTP 1.0的时候,302的规范是原请求是post不可以自动重定向,但是服务器和浏览器的实现是运行重定向。
 
把HTTP 1.0规范中302的规范和实现拆分开,分别赋予HTTP 1.1中303和307,因此在HTTP 1.1中,303继承了HTTP 1.0中302的实现(即原请求是post,也允许自动进行重定向,结果是无论原请求是get还是post,都可以自动进行重定向),而307则继承了HTTP 1.0中302的规范(即如果原请求是post,则不允许进行自动重定向,结果是post不重定向,get可以自动重定向)。
 
2、303see other
 
对请求的响应可以在不同的URL下找到,并且应该在该资源上使用GET方法来获取。这个方法的存在主要是为了允许输出POST激活的脚本来将用户代理重定向到选定的资源。新的URL 不是原始请求资源的替代引用,303响应不能被缓存,但是对第二个(重定向的)请求的响应可能是可缓存的。
 
不同的URL应该通过响应中的位置字段求得。如果请求方法是HEAD,响应实体应该包含一个超链接到新URL的短超文本记录。
 
注意:很多HTTP-1.1用户代理不了解303的状态。当与这些客户端的互操作性是一个问题时,可以使用302状态代码。因为大多数用户代理对302响应做出反应,如303所述。
 
307在http 1.1规范中,307为临时重定向,注意划红线的部分,如果重定向307的原请求不是get或者head方法,那么浏览器一定不能自动的进行重定向,即便location有url,也应该忽略。
 
也就是307继承了302在HTTP 1.0中的规范(303继承了302在HTTP 1.0中的实现)。
 
3、307当代重定向
 
被请求的资源暂时驻留在一个不同的URL中。由于重定向可能偶尔被修改,所以客户端应该继续使用请求URL作为将来的请求。这个响应只有在cache-control或expires头域指示的情况下才能被缓存。
 
临时URL应该由响应中的位置字段给出。如果请求方法是HEAD,那么响应实体应该包含一个超链接到新URL(d)的短超文本记录,因为许多pre-HTTP / 1.1 用户代理不理解307状态。因此,注释应该包含用户在新的URL上重复原始请求所需的信息。
 
如果接收到307状态码以响应除GET或HEAD之外的请求,则用户代理不能自动重定向请求,除非用户可以确认它,因为这可能会改变发出请求的条件。
 
在HTTP 1.0规范中,302的规范并没有被服务器和浏览器遵守,即规范和实现出现了二义性,因此在HTTP 1.1中,将302的规范和实现拆分成了303和307。
 
浏览器对307状态的处理规划与302状态相同,之所以将值307引入到HTTP1.1中,是因为在最初的消息是POST的情况下,许多浏览器依旧错误地跟随302响应中的定向信息。浏览器应该只在接收到303响应状态时才从POST请求的重定向信息。引入这个新状态是为了去除二义性:如果接到303响应,则进行进行GET和POST请求的重定向,如果接收到307响应,对于GET请求的重定向,则继续进行,但对于POST请求的重定向,则不在继续下去。
 
七、HTTP状态码302、303、307区别
 
HTTP状态码3XX表示重定向,表明浏览器需要执行某些特殊的处理以正确处理请求。
 
301 Moved Permanently 
永久性定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。
 
302 Found 
临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。和301相似,但302表示的资源不是永久移动,只是临时性的。换句话说,已移动的资源对应的URI将来还有可能发生变化,比如,用户把uri保存为书签,但不会像301状态码出现时那样更新书签,而是仍旧保留返回302状态码的页面对应的uri
 
303 See Other 
该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源,=, 
303和302状态码有着相同的功能,但是303明确表示客户端应当采用get方法获取资源,这点与302状态码有区别。 
比如,当使用post方法访问CGI程序,其执行后的处理结果为希望客户端能以get方法重定向到另一个uri上去时,返回303状态码。虽然302也可实现相同的功能,但这里使用302状态码是最理想的。
 
当301、302、303响应状态码返回时,几乎所有浏览器都会把post改成get,并删除请求报文内的主体,之后请求会自动再次发送。 
301、302标准是禁止将post方法改变成get方法的,但实际使用时大家都会这么做。
 
307 Temporary Redirect 
临时重定向。该状态码与302有相同的含义。尽管302标准禁止post变化get,但实际使用时大家不遵守。 
307会遵照浏览器标准,不会从post变为get。但是对于处理响应时的行为,各种浏览器有可能出现不同的情况。
 
本文由众益网站建设提供的石家庄网站建设中域名301重定向页面跳转
 
作者: 众益网站建设
 
版权属于: 众益网站建设,
 
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
 

还有更多疑问?扫一扫加微信直接咨询(建站优惠中)

石家庄网站建设中域名301重定向页面跳转
TGA标签:网站建设 网站建设公司
本文由专注于网站建设10年的石家庄众益网络编写,原创不易,转载请注明出处:https://www.zhongyiweb.com/news/256.html
相关新闻
最新新闻
随机新闻
全新网站设计案例
    • 我们能做什么

      致力于网站建设与网站托管,专业领域包括石家庄网站建设、网页设计制作、手机网站开发、竞价托管、网站托管代运营,等服务范围涵盖基础的域名服务、主机服务;企业邮箱、云服务器、网络营销等应用服务,为石家庄网站建设客户提供最佳的网站建设解决方案,帮助客户在新的全球化互联网环境中保持优势。

    • 我们的优势

    • 更多 +关于众益网络

      众益网络一直秉承大众受益,大众钟意的理念,坚持用最先进的技术,以用户最终价值为导向,向用户提供优质石家庄网站建设服务,从而赢得了石家庄众多企业以及全国用户的信赖。倾力打造大众受益,大众钟意的网络和谐环境!

Copyright Zhongyiweb.com technology Co., LTD. All Rights Reserved.  网站地图 分站

服务热线

153-691-89891

企业网站建设

网站推广托管

微信小程序

扫一扫加微信咨询