import createIntlMiddleware from 'next-intl/middleware'; import { routing } from './i18n/routing'; import { NextRequest, NextResponse } from 'next/server'; const intlMiddleware = createIntlMiddleware(routing); /** * # proxy * 说明:站点入口中间件。URL 即语言(设计契约): * - / 与 /* …… 英文站(默认语言,无前缀) * - /zh 与 /zh/* …… 中文站 * - /en 与 /en/* …… 非法路径,直接 404(品牌 404 页)。 * 默认语言不提供带前缀的别名,避免 /en/* 与 /* 产生重复内容与重定向链。 */ export function proxy(request: NextRequest) { const { pathname } = request.nextUrl; if (pathname === '/en' || pathname.startsWith('/en/')) { // rewrite 到不存在的内部路径 → Next 渲染 not-found(404),URL 保持原样 const url = request.nextUrl.clone(); url.pathname = '/__en_not_available__'; return NextResponse.rewrite(url, { status: 404 }); } return intlMiddleware(request); } export const config = { matcher: [ '/', '/((?!api|_next|_vercel|.*\\..*).*)' ] };