diff --git a/middleware.ts b/middleware.ts index d09705a..d7b7270 100644 --- a/middleware.ts +++ b/middleware.ts @@ -3,37 +3,43 @@ 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}`; - + if (hasLocalePrefix) { + const intlMiddleware = createMiddleware({ + ...routing, + }); + return intlMiddleware(request); + } + + if (pathname === "/" || pathname === "") { + const intlMiddleware = createMiddleware({ + ...routing, + localeDetection: true, + }); + return intlMiddleware(request); + } + + const oldSerbianPaths = ["products", "about", "contact", "checkout"]; + const isOldSerbianPath = oldSerbianPaths.some( + (path) => pathname === `/${path}` || pathname.startsWith(`/${path}/`) + ); + + if (isOldSerbianPath) { + const newPathname = `/sr${pathname}`; const url = request.nextUrl.clone(); url.pathname = newPathname; - return NextResponse.redirect(url, 301); } const intlMiddleware = createMiddleware({ ...routing, }); - return intlMiddleware(request); }