301 永久重定向的缓存问题
问题描述
在使用 301 的时候常常会遇到一个问题:当服务端针对某个 URL 设置了 301 永久重定向后,不管怎么重新设置或者删除设置,浏览器在进行访问时仍然会使用最开始缓存的 301 重定向,而服务端无法控制用户将原来的重定向配置进行删除。
对于用户来说,刚开始服务端设置了 301 重定向时,浏览器能看到 301 的响应,也能正常访问资源。但是在 301 重定向重新被设置后,浏览器还是会访问原来重定向的资源,即便该资源已经失效。
首先,在 nginx.conf 文件中要添加以下类似的配置:
server {
listen 80;
server_name redirect.com;
root /directory/redirect;
location /origin {
# 永久重定向
rewrite ^/origin http://redirect.com/301 permanent;
# # 临时重定向
# rewrite ^/origin http://redirect.com/302 redirect;
}
location /301 {
try_files $uri /redirect301.html$is_args$args;
}
location /302 {
try_files $uri /redirect302.html$is_args$args;
}
}
配置文件中先开启了 301 永久重定向,此时在浏览器访问 http://redirect.com/origin 就会重定向到 http://redirect.com/redirect301.html,该重定向会被浏览器缓存起来。当我们关闭配置文件的 301 规则,然后打开 302 重定向规则,重新在浏览器访问相同链接时,浏览器依然会

本文探讨了301永久重定向在服务器配置更改后浏览器仍使用旧缓存的问题,提出通过设置Cache-Control头来避免缓存,并提供了清理缓存的方法。
最低0.47元/天 解锁文章
3318





