@@ -117,7 +117,7 @@ export default async function archivedEnterpriseVersions(
117117 languageCacheControl ( res ) // call first to get `vary`
118118 }
119119 archivedCacheControl ( res ) // call second to extend duration
120- return res . redirect ( redirectCode , redirectTo )
120+ return res . safeRedirect ( redirectCode , redirectTo )
121121 }
122122
123123 const redirectJson = ( await getRemoteJSON ( getProxyPath ( 'redirects.json' , requestedVersion ) , {
@@ -137,7 +137,7 @@ export default async function archivedEnterpriseVersions(
137137 languageCacheControl ( res ) // call first to get `vary`
138138 }
139139 archivedCacheControl ( res ) // call second to extend duration
140- return res . redirect ( redirectCode , `/${ language } ${ newRedirectTo } ` )
140+ return res . safeRedirect ( redirectCode , `/${ language } ${ newRedirectTo } ` )
141141 }
142142 }
143143 // For releases 2.13 and lower, redirect language-prefixed URLs like /en/enterprise/2.10 -> /enterprise/2.10
@@ -146,7 +146,7 @@ export default async function archivedEnterpriseVersions(
146146 versionSatisfiesRange ( requestedVersion , `<${ firstVersionDeprecatedOnNewSite } ` )
147147 ) {
148148 archivedCacheControl ( res )
149- return res . redirect ( redirectCode , req . baseUrl + req . path . replace ( / ^ \/ e n / , '' ) )
149+ return res . safeRedirect ( redirectCode , req . baseUrl + req . path . replace ( / ^ \/ e n / , '' ) )
150150 }
151151
152152 // Redirects for releases 2.13 - 2.17
@@ -170,7 +170,7 @@ export default async function archivedEnterpriseVersions(
170170 // new destination.
171171 const redirect = `/${ language || 'en' } ${ newPath || withoutLanguagePath } `
172172 cacheAggressively ( res )
173- return res . redirect ( redirectCode , redirect )
173+ return res . safeRedirect ( redirectCode , redirect )
174174 }
175175 }
176176 // Redirects for 2.18 - 3.0. Starting with 2.18, we updated the archival
@@ -193,7 +193,7 @@ export default async function archivedEnterpriseVersions(
193193 if ( redirectJson [ req . path ] ) {
194194 res . set ( 'x-robots-tag' , 'noindex' )
195195 cacheAggressively ( res )
196- return res . redirect ( redirectCode , redirectJson [ req . path ] )
196+ return res . safeRedirect ( redirectCode , redirectJson [ req . path ] )
197197 }
198198 }
199199 // Retrieve the page from the archived repo
@@ -260,7 +260,7 @@ export default async function archivedEnterpriseVersions(
260260 const staticRedirect = body . match ( patterns . staticRedirect )
261261 if ( staticRedirect ) {
262262 cacheAggressively ( res )
263- return res . redirect ( redirectCode , staticRedirect [ 1 ] )
263+ return res . safeRedirect ( redirectCode , staticRedirect [ 1 ] )
264264 }
265265
266266 res . set ( 'content-type' , r . headers . get ( 'content-type' ) || '' )
@@ -373,7 +373,7 @@ export default async function archivedEnterpriseVersions(
373373 statsTags . push ( `fallback:${ fallbackRedirect } ` )
374374 statsd . increment ( 'middleware.trying_fallback_redirect_success' , 1 , statsTags )
375375 cacheAggressively ( res )
376- return res . redirect ( redirectCode , fallbackRedirect )
376+ return res . safeRedirect ( redirectCode , fallbackRedirect )
377377 }
378378 statsd . increment ( 'middleware.trying_fallback_redirect_failure' , 1 , statsTags )
379379 }
0 commit comments