301是永久重定向,302是临时重定向。
前端js是没有办法对301和302进行直接操作的,这要么事后端行为,要么是浏览器的默认行为。
1. 前端重定向
location.href = "http://127.0.0.1:5501/实例-闭包.html";
并不会产生301或302状态码,如下图:
2. 浏览器默认行为
例如,当访问 http://localhost/archive 页面的时候,如果没有archive这个文件,那么将会发生301跳转到 http://localhost/archive/index.html (这是配置cdn加速时发现的,路径不准确导致触发了301重定向到了源站)
3. 后端重定向
后端php,接触过的thinkPHP框架 this->redirect() 发生的是302跳转。需要注意的是,如果这个行为是ajax,那么页面并不会发生跳转,而是返回重定向的数据到回调函数,拥有两个ajax请求,如下图:
而301重定向一般的应用场景是,当网站的目录结构或拓展发生改变时需要重定向,如php改成html便可以使用301永久重定向。
4. 301和302区别
301永久重定向对SEO无任何不好的影响,通过网页A的关键词排名和企业级别都会直接传给网页B。网址更换了域名,表示本网页永久性转移到另一个地址。对于SEO而言,是给了搜索引擎一个友好的信息,告诉它此页面已永久重定向,避免搜索引擎找不到正确的页面。