引言
今天排查跳转的时候,想到整理一下这个跳转重定向的方式。
跳转分两种:
- 一种是服务端(server)跳转
- 一种是客户端(client)跳转
服务端跳转
服务端通过请求的Http
报文当中的Response
的header
部分,给客户端响应特定的内容,并且给设置特定状态码
,实现跳转。
服务端的跳转,对搜索引擎来说,十分友好
可以很轻松捕捉到跳转后的最终到达页面。
对用户来说,也是很顺畅能够跳转过去,拥有很好的用户体验
301跳转【永久链接】
比如,服务端进行301
跳转,就是给客户端响应301
状态码,并且设置报文响应头。
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://example.com/new-page.php");
exit;
很明显,这里不止给了状态码,还给了一个Location
,指定要跳转到哪个位置去。
最好在指定跳转后,服务端不再执行其他页面程序了。
302跳转【临时链接】
与301
跳转一样,302
跳转也是发送了一个响应头
但php
就不需要显式设置状态码了,因为默认就会设置,
<?php
header("Location: http://example.com");
exit(); // 确保脚本停止执行
这样就会跳转了。
客户端跳转
客户端一般就是通过js
来控制,给用户浏览器进行跳转了。
一般来说都是使用window.location.href
,如下:
window.location.href = 目标链接
就可以实现跳转了,但这种方式对搜索引擎不大好
而且,没有办法在Chorme
的Network
菜单当中被抓取到,只能够通过断点,或者地址栏的变化察觉到