简介
很多小伙伴可能一直没有搞懂nginx的301重定向、302重定向以及反代地址中直接写路径的区别
这篇文章就详细讲讲这三个的区别和作用
SEO权重
在开始前先了解一下什么是SEO权重
SEO权重说简单点就是浏览器引擎对你这个路径的评分
当你评分越高,用户搜索的时候,你的排名越靠前,反之,评分越低被搜索的时候排名越靠后
301重定向
301重定向是永久重定向
使用301重定向会在浏览器上存在缓存,下次访问的时候浏览器可能会直接跳转到目标页,不在请求服务器
SEO权重会转移到新地址
修改难度较高,即使删除了配置,访问过的用户浏览器里面还有缓存,地址要是还能访问用户会可以直接访问,地址要是不能访问用户访问会出错,想要解决这一现象需要用户清除浏览器缓存。
302重定向
302重定向是临时定向
302与301相反,使用302用户浏览器上没有缓存,每次访问都会请求服务器
SEO权重会保留在原来的地址,但是如果长期使用302,会导致搜索引擎评分异常,导致两个页面的评分都上不去
修改难度低,因为用户的浏览器没有缓存,所以只要修改了配置文件马上就起作用了
proxy_pass带路径
这种方式适用于隐藏后端架构或跨服务集成。
例如你的登录页面是www.xxxx.com/login/,但是你想让地址栏看起来干净清爽,那么就使用proxy_pass,使用proxy_pass可以隐藏域名后面的/login/,用户在浏览器地址栏上看到的只有www.xxxx.com。
但是这个方式有个弊端,可能会加载不出CSS
例如你的页面文件里面写的是<link href="css/style.css">,用户访问的时候浏览器直接加载CSS的地址为www.xxxx.com/css/style.css,但是实际上你的css文件在login目录下的css目录里面,这就导致了css加载失败,如果使用的是301或者302定向,浏览器地址栏显示的是www.xxxx.com/login/login.php,浏览器加载css的时候加载路径为www.xxxx.com/login/css/style.css,这时候就可以成功加载css。
总结
| 特性 | 301 | 302 | proxy_pass |
|---|---|---|---|
| 定义 | 永久重定向 | 临时重定向 | 后端透明转发 |
| 浏览器地址栏 | 会改变 | 会改变 | 不会改变 |
| 浏览器缓存 | 缓存 | 不缓存 | 不涉及 |
| 请求次数 | 2次 | 2次 | 1次 |
| 服务器负载 | 极低 | 极低 | 较高 |
| 网络联通性 | 用户必须能直接访问目标地址 | 用户必须能直接访问目标地址 | 用户只需要访问Nginx,后端可隐藏在内网 |
| SEO权重 | 转移到新地址 | 保留在原来地址 | 保留在当前显示的URL上 |
| 修改难度 | 搞 | 低 | 极低 |
| 资源路径加载 | 正常,浏览器会根据新URL修正相对路径 | 正常,浏览器会根据新URL修正相对路径 | 易报错,容易出现css/js路径404 |