2016-09-26 464 views
1

我傻傻的用301代替302在Nginx的nginx的清除301来自客户端的浏览器缓存永久

location /somewhere/ { 
    return 301 /somewhere/neat/; 
} 

特定的重定向,但现在我需要改变,我们重定向太:

location /somewhere/ { 
    # 302 now, lets not make the same mistake again! 
    return 302 /somewhere/else/entirely/; 
} 

我当然,如果我在隐身模式下查看网址或破坏我的浏览器重定向缓存,可以看到此更改,但是许多用户在没有自己做同样的情况下看不到它。即使我们可以可靠地指导我们的客户破解缓存,但我们只能访问其中的一小部分,其余所有内容都将保留旧内容。

回答

1

你在说什么是缓存破坏,我有同样的问题。所有你需要做的事情(如果我理解正确的话)是强制查询字符串参数到url的末尾,这有效地强制客户端浏览器刷新以获取任何“新”内容。

一个可能的解决方法是将查询字符串追加到URL的末尾,如果该查询字符串尚未存在。

在你的情况,你可能能够使用一个重写,这两个“修复”错误的URL,并且还缓存萧条原始URL重定向:

# Fix the incorrect url 
location /somewhere/neat/ { 
    rewrite ^(.*)$ /somewhere/$1?cb=12345 last; 
} 

# Handle the new redirect 
location /somewhere/ { 
    return 302 /somewhere/else/entirely/; 
} 

CB = 12345可不管只要它只是一个查询字符串

这种方法的唯一问题是如果你的位置/某处/整齐需要仍然是一个活动页面,因为这将有效地迫使它总是回到/某处

相关问题