Barra final solo en la raíz de idioma (/es/), resto de rutas sin barra
trailingSlash true ponía barra en todo (/es/content-creators/). Se pasa a skipTrailingSlashRedirect + normalización en middleware: raíz de idioma /es → /es/ (con barra), y cualquier sub-ruta con barra final se redirige sin ella (/es/x/ → /es/x). Sin bucles. Las /api quedan fuera del middleware (sin 308). El redirect del logout apunta a /es/. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,5 +18,6 @@ export async function GET(_request: Request, { params }: { params: Promise<{ loc
|
||||
const session = await getSession()
|
||||
session.destroy()
|
||||
|
||||
// La raíz de idioma es canónica CON barra (/es/); el resto de rutas sin barra.
|
||||
return new NextResponse(null, { status: 303, headers: { Location: `/${loc}/` } })
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ export function LoginForm() {
|
||||
// Navegación completa (no del lado cliente): fuerza que el servidor
|
||||
// re-renderice el layout/cabecera con la sesión nueva. Con router.push
|
||||
// el layout persiste y la cabecera seguía mostrando "Conectar".
|
||||
window.location.assign(`/${locale}${data.needsSelection ? '/select-account/' : '/my-account/'}`)
|
||||
window.location.assign(`/${locale}${data.needsSelection ? '/select-account' : '/my-account'}`)
|
||||
return
|
||||
} else {
|
||||
const key = (ERROR_KEYS as readonly string[]).includes(data.error ?? '') ? data.error! : 'genericError'
|
||||
|
||||
@@ -28,7 +28,7 @@ export function SelectAccountForm({ accounts }: { accounts: GameAccount[] }) {
|
||||
})
|
||||
const data: { success?: boolean } = await res.json()
|
||||
// Navegación completa: re-renderiza el layout/cabecera con la cuenta ya elegida.
|
||||
if (data.success) window.location.assign(`/${locale}/my-account/`)
|
||||
if (data.success) window.location.assign(`/${locale}/my-account`)
|
||||
else {
|
||||
setError(t('error'))
|
||||
setBusy(null)
|
||||
|
||||
Reference in New Issue
Block a user