import createMiddleware from "next-intl/middleware"; import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; import { routing } from "./src/i18n/routing"; const oldSerbianPaths = ["", "products", "about", "contact", "checkout"]; export default function middleware(request: NextRequest) { const pathname = request.nextUrl.pathname; const isOldSerbianPath = oldSerbianPaths.some((path) => { if (path === "") { return pathname === "/"; } return pathname === `/${path}` || pathname.startsWith(`/${path}/`); }); const hasLocalePrefix = routing.locales.some( (locale) => pathname === `/${locale}` || pathname.startsWith(`/${locale}/`) ); if (isOldSerbianPath && !hasLocalePrefix) { const newPathname = pathname === "/" ? "/sr" : `/sr${pathname}`; const url = request.nextUrl.clone(); url.pathname = newPathname; return NextResponse.redirect(url, 301); } const intlMiddleware = createMiddleware({ ...routing, }); return intlMiddleware(request); } export const config = { matcher: [ "/", "/(sr|en|de|fr)/:path*", "/((?!api|_next|_vercel|.*\\..*).*)", ], };