@@ -54,7 +54,12 @@ pub fn rustdoc_redirector_handler(req: &mut Request) -> IronResult<Response> {
54
54
}
55
55
queries. extend ( req. url . as_ref ( ) . query_pairs ( ) ) ;
56
56
let url = ctry ! ( req, parse_url_with_params( & url_str, queries) ) ;
57
- let mut resp = Response :: with ( ( status:: Found , Redirect ( url) ) ) ;
57
+ let status = if matches ! ( cache_policy, CachePolicy :: ForeverInCdnAndBrowser ) {
58
+ status:: MovedPermanently
59
+ } else {
60
+ status:: Found
61
+ } ;
62
+ let mut resp = Response :: with ( ( status, Redirect ( url) ) ) ;
58
63
resp. extensions . insert :: < CachePolicy > ( cache_policy) ;
59
64
Ok ( resp)
60
65
}
@@ -190,7 +195,7 @@ pub fn rustdoc_redirector_handler(req: &mut Request) -> IronResult<Response> {
190
195
} ;
191
196
192
197
let cache = if version == "latest" {
193
- CachePolicy :: ForeverInCdn
198
+ CachePolicy :: ForeverInCdnAndBrowser
194
199
} else {
195
200
CachePolicy :: ForeverInCdnAndStaleInBrowser
196
201
} ;
@@ -1767,7 +1772,7 @@ mod test {
1767
1772
}
1768
1773
1769
1774
#[ test]
1770
- fn test_redirect_to_latest_302 ( ) {
1775
+ fn test_redirect_to_latest_301 ( ) {
1771
1776
wrapper ( |env| {
1772
1777
env. fake_release ( ) . name ( "dummy" ) . version ( "1.0.0" ) . create ( ) ?;
1773
1778
let web = env. frontend ( ) ;
@@ -1777,10 +1782,10 @@ mod test {
1777
1782
. unwrap ( ) ;
1778
1783
let url = format ! ( "http://{}/dummy" , web. server_addr( ) ) ;
1779
1784
let resp = client. get ( url) . send ( ) ?;
1780
- assert_eq ! ( resp. status( ) , StatusCode :: FOUND ) ;
1785
+ assert_eq ! ( resp. status( ) , StatusCode :: MOVED_PERMANENTLY ) ;
1781
1786
assert_eq ! (
1782
1787
resp. headers( ) . get( "Cache-Control" ) . unwrap( ) ,
1783
- reqwest:: header:: HeaderValue :: from_str( "public" ) . unwrap( )
1788
+ reqwest:: header:: HeaderValue :: from_str( "public, max-age=31104000 " ) . unwrap( )
1784
1789
) ;
1785
1790
assert ! ( resp
1786
1791
. headers( )
0 commit comments