@@ -154,7 +154,16 @@ export class AngularServerApp {
154
154
return null ;
155
155
}
156
156
157
- if ( matchedRoute . renderMode === RenderMode . Prerender ) {
157
+ const { redirectTo, status, renderMode } = matchedRoute ;
158
+ if ( redirectTo !== undefined ) {
159
+ // Note: The status code is validated during route extraction.
160
+ // 302 Found is used by default for redirections
161
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/Response/redirect_static#status
162
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
163
+ return Response . redirect ( new URL ( redirectTo , new URL ( request . url ) ) , ( status as any ) ?? 302 ) ;
164
+ }
165
+
166
+ if ( renderMode === RenderMode . Prerender ) {
158
167
const response = await this . handleServe ( request , matchedRoute ) ;
159
168
if ( response ) {
160
169
return response ;
@@ -186,7 +195,7 @@ export class AngularServerApp {
186
195
return null ;
187
196
}
188
197
189
- const { url , method } = request ;
198
+ const { method } = request ;
190
199
if ( method !== 'GET' && method !== 'HEAD' ) {
191
200
return null ;
192
201
}
@@ -228,18 +237,7 @@ export class AngularServerApp {
228
237
matchedRoute : RouteTreeNodeMetadata ,
229
238
requestContext ?: unknown ,
230
239
) : Promise < Response | null > {
231
- const { redirectTo, status } = matchedRoute ;
232
- const url = new URL ( request . url ) ;
233
-
234
- if ( redirectTo !== undefined ) {
235
- // Note: The status code is validated during route extraction.
236
- // 302 Found is used by default for redirections
237
- // See: https://developer.mozilla.org/en-US/docs/Web/API/Response/redirect_static#status
238
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
239
- return Response . redirect ( new URL ( redirectTo , url ) , ( status as any ) ?? 302 ) ;
240
- }
241
-
242
- const { renderMode, headers } = matchedRoute ;
240
+ const { renderMode, headers, status } = matchedRoute ;
243
241
if (
244
242
! this . allowStaticRouteRender &&
245
243
( renderMode === RenderMode . Prerender || renderMode === RenderMode . AppShell )
@@ -292,7 +290,9 @@ export class AngularServerApp {
292
290
} ) ;
293
291
}
294
292
293
+ const url = new URL ( request . url ) ;
295
294
let html = await assets . getIndexServerHtml ( ) . text ( ) ;
295
+
296
296
// Skip extra microtask if there are no pre hooks.
297
297
if ( hooks . has ( 'html:transform:pre' ) ) {
298
298
html = await hooks . run ( 'html:transform:pre' , { html, url } ) ;
0 commit comments