跳转到内容

Nginx配置重定向 301还是302

先说结论:

如果是个人网站,或网站用途只是开发测试,改动的可能性比较大,建议使用302

如果是生产环境,或改动的可能性比较小,建议使用301

状态码含义

首先要明白两个状态码的含义:

301 Moved Permanently

**

302 Moved Temporarily

**

浏览器会缓存301的请求,不会缓存302

实际影响

以下面 nginx 配置为例:

bash
server {

 listen 80;

 location / {

return 301 https://$host$request_uri;

 }

}

上述配置,会把用 http 协议访问站点的请求,重定向为用 https 协议来访问

用 Chrome 浏览器作实验,假设在地址栏输入zzjtnb.com, 则浏览器最终访问的是https://zzjtnb.com

因为zzjtnb.com是个人站点,可能不久后提供的内容有所变化,注释掉了上述重定向配置, 取消对 http 协议的重定向

bash
server {

 listen 80;

 location / {

 }

}

然后重启 nginx

bash
nginx -s reload

再次使用自己电脑上的 Chrome 访问,地址栏输入zzjtnb.com, 发现浏览器仍然访问https://zzjtnb.com

打开开发者工具,开启禁用缓存选项,再一次输入zzjtnb.com, 还是使用 https 协议, 这就是因为浏览器对301状态码的响应,进行了缓存,给个人开发者带来了苦恼

[](#清除 301 缓存 "清除 301 缓存")## 清除 301 缓存

以 Chrome 为例:

  1. 关于谷歌
  2. 更多工具
  3. 清除浏览器数据
  4. 勾选 浏览器记录缓存的图片和文件

重新访问站点即可!