foundation

Dynamic routes

Моделируйте route parameters, catch-all segments, static params, состояния not-found и canonical URL.

Dynamic segments — папки в скобках: `[slug]`, catch-all `[...slug]`, optional `[[...slug]]`. Params приходят строками — валидируйте и сужайте тип перед использованием. `generateStaticParams` предсобирает пути для SSG; отсутствие — `notFound()`.

					// app/blog/[slug]/page.tsx
export async function generateStaticParams() {
  const posts = await getPosts();
  return posts.map((p) => ({ slug: p.slug }));
}
				

Canonical URL важны для SEO при нескольких путях к похожему контенту — metadata и redirects осознанно.

На интервью: static param generation, доступ к params в runtime, 404 против пустого состояния.

Типовые ошибки: невалидированные params в запросах, неограниченные static paths на build, дубликаты без canonical.

Компромисс: гибкость URL против стоимости build и риска дубликатов в индексе.

Чеклист:

  • Валидируйте params до доступа к данным.
  • generateStaticParams для известных каталогов.
  • notFound для отсутствующих ресурсов.
  • Canonical metadata для алиасов.