Angular Universal - это платформа для рендеринга Angular приложений на серверной стороне. Она позволяет сгенерировать HTML-страницы на сервере перед отправкой клиенту, что улучшает производительность и позволяет получше справляться с поисковой оптимизацией.
Если вы хотите настроить код 404 (страницу не найдено) в Angular Universal, вам потребуется внести несколько изменений в код вашего приложения.
1. Добавьте маршрут и компонент для обработки ошибки 404 в вашем файле маршрутизации (например, app.routing.module.ts
). Маршрут должен выглядеть примерно так:
const routes: Routes = [ // другие маршруты { path: '404', component: NotFoundComponent }, { path: '**', redirectTo: '/404' }, ];
2. Создайте компонент NotFoundComponent
для обработки ошибки 404. В вашем компоненте вы можете отобразить пользовательское сообщение о том, что страница не найдена, и предложить пользователю возврат на главную страницу или выполнение других действий. Пример компонента может выглядеть следующим образом:
import { Component } from '@angular/core'; @Component({ selector: 'app-not-found', template: ` <h1>Страница не найдена</h1> <p>Извините, запрашиваемая страница не найдена.</p> <a routerLink="/">Вернуться на главную страницу</a> `, }) export class NotFoundComponent {}
3. Для того, чтобы Angular Universal отправлял код 404 для недействительных маршрутов, необходимо проверить response
на 404
статус код и сформировать соответствующий ответ сервера в вашем файле server.ts
. Ниже приведен пример кода, который можно использовать в файле server.ts
:
import 'zone.js/dist/zone-node'; import 'reflect-metadata'; import { enableProdMode } from '@angular/core'; import * as express from 'express'; import * as fs from 'fs'; import { join } from 'path'; const app = express(); const DIST_FOLDER = join(process.cwd(), 'dist/browser'); app.engine('html', (_, options, callback) => { const { req, res } = options; fs.readFile(join(DIST_FOLDER, 'index.html'), 'utf-8', (_, content) => { if (res.statusCode === 404) { const filePath = join(DIST_FOLDER, '404', 'index.html'); fs.readFile(filePath, 'utf-8', (_, errorContent) => { const response = errorContent.replace( '<html lang="en">', `<html lang="en" data-status-code="404">`, ); callback(null, response); }); } else { callback(null, content); } }); }); app.get('*.*', express.static(DIST_FOLDER, { maxAge: '1y' })); app.get('*', (_, res) => { res.render('index', { req: _, res }); }); const PORT = process.env.PORT || 4000; app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); });
Важно отметить, что у вас должен быть шаблон файла 404.html
, который будет использоваться для формирования HTML-страницы с кодом 404.
Это только пример того, как можно сформировать код 404 в Angular Universal. Вы можете настроить его под свои конкретные потребности, добавив дополнительную логику или пользовательские сообщения об ошибках.