web-next: página 404 temática (not-found)

Añade una 404 con el markup del tema (main-page > middle-content >
body-content > title-content + body-box-content justified), dentro del
layout de [locale] (cabecera/vídeo/pie). Como el layout raíz es un segmento
dinámico ([locale]), se usa el patrón de next-intl: `[locale]/not-found.tsx`
+ catch-all `[locale]/[...rest]/page.tsx` que dispara notFound(). Bilingüe
(claves NotFound.title/message en es/en). Devuelve HTTP 404; las rutas
conocidas siguen 200.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-13 11:22:06 +00:00
parent a93527cef7
commit 4b78aa847a
4 changed files with 43 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
import { notFound } from 'next/navigation'
/**
* Catch-all de rutas inexistentes bajo un idioma: dispara notFound() para que
* se renderice la 404 temática (`[locale]/not-found.tsx`) dentro del layout.
*/
export default function CatchAllNotFound() {
notFound()
}
+26
View File
@@ -0,0 +1,26 @@
import { getTranslations } from 'next-intl/server'
/**
* 404 temática (dentro del layout de [locale] → cabecera/vídeo/pie + tema).
* Se muestra cuando se llama a notFound() dentro de un segmento de idioma,
* incluido el catch-all `[...rest]` para rutas inexistentes.
*/
export default async function NotFound() {
const t = await getTranslations('NotFound')
return (
<div className="main-page">
<div className="middle-content">
<div className="body-content">
<div className="title-content">
<h1>{t('title')}</h1>
</div>
<div className="box-content">
<div className="body-box-content justified">
<p>{t('message')}</p>
</div>
</div>
</div>
</div>
</div>
)
}