@@ -54,7 +54,12 @@ pub fn rustdoc_redirector_handler(req: &mut Request) -> IronResult<Response> {
5454 }
5555 queries. extend ( req. url . as_ref ( ) . query_pairs ( ) ) ;
5656 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) ) ) ;
5863 resp. extensions . insert :: < CachePolicy > ( cache_policy) ;
5964 Ok ( resp)
6065 }
@@ -190,7 +195,7 @@ pub fn rustdoc_redirector_handler(req: &mut Request) -> IronResult<Response> {
190195 } ;
191196
192197 let cache = if version == "latest" {
193- CachePolicy :: ForeverInCdn
198+ CachePolicy :: ForeverInCdnAndBrowser
194199 } else {
195200 CachePolicy :: ForeverInCdnAndStaleInBrowser
196201 } ;
@@ -1767,7 +1772,7 @@ mod test {
17671772 }
17681773
17691774 #[ test]
1770- fn test_redirect_to_latest_302 ( ) {
1775+ fn test_redirect_to_latest_301 ( ) {
17711776 wrapper ( |env| {
17721777 env. fake_release ( ) . name ( "dummy" ) . version ( "1.0.0" ) . create ( ) ?;
17731778 let web = env. frontend ( ) ;
@@ -1777,10 +1782,10 @@ mod test {
17771782 . unwrap ( ) ;
17781783 let url = format ! ( "http://{}/dummy" , web. server_addr( ) ) ;
17791784 let resp = client. get ( url) . send ( ) ?;
1780- assert_eq ! ( resp. status( ) , StatusCode :: FOUND ) ;
1785+ assert_eq ! ( resp. status( ) , StatusCode :: MOVED_PERMANENTLY ) ;
17811786 assert_eq ! (
17821787 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( )
17841789 ) ;
17851790 assert ! ( resp
17861791 . headers( )
0 commit comments