diff --git a/middleware.ts b/middleware.ts index 5fcccb0..d09705a 100644 --- a/middleware.ts +++ b/middleware.ts @@ -1,9 +1,41 @@ import createMiddleware from "next-intl/middleware"; +import { NextResponse } from "next/server"; +import type { NextRequest } from "next/server"; import { routing } from "./src/i18n/routing"; -export default createMiddleware({ - ...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: [