url重定向分为301和302两种,301和302都是HTTP的状态码,都代表某个url发生了转变。但是区别在于:
-
301
永久的重定向,表示当前网页永久性转移到了另一个url上,搜索引擎在抓取新内容的时候会将旧的网址替换为重定向的网址,同时旧网址下原有的外部链接都转移到新地址下,从而不会让当前网站的排名收到影响。也即:新网址完全继承了旧网址,旧网址的排名等完全清零。在实际的场景中:比如,当访问a.com 的时候会 重定向 b.com 下次再次访问a.com的时候,浏览器不会发起请求a.com而是直接去访问b.com,也即浏览器会记住
-
302
临时的重定向,表示当前网页暂时转移到另一个url上,搜索引擎会抓取新的内容但是会保留旧的网址。也即对旧网址没有影响,新网址不会有排名。在实际场景中:比如,浏览器不记忆,每次都会先访问旧地址。
如何通过nodejs让客户端重定向?
-
状态码设置为302 表示临时重定向
statusCode
-
在响应头中通过Location 告诉客户端往哪儿重定向
setHeader
-
如果客户端发现收到服务器的响应的状态码是302,就会自动去响应头中找Location,然后对该地址发起新的请求
-
可以在开发者工具中查看重定向的过程,勾选->Preserve log(不让其清除之前的请求响应记录)
-
案例:
let http = require('http') http .createServer((req,res) => { // 重定向 res.statsuCode = 302;// 302重定向 // res.statusCode = 301;// 301重定向 res.setHeader('Location','/index.html'); res.end(); }) .listen(3000,()=>{ console.log('server is running...'); })