diff --git a/CHANGELOG.md b/CHANGELOG.md index 30e06d15a8..e6473c5459 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,7 +45,7 @@ Our versioning strategy is as follows: * `[sitecore-jss-angular]` Fix memory leak in image and link components ([#1435](https://github.com/Sitecore/jss/pull/1435)) * `[templates/nextjs-multisite]` Fix skipped site info fetch ([#1434](https://github.com/Sitecore/jss/pull/1434)) * `[angular]` Fix app build errors. Webpack version is locked at 5.78 due to https://github.com/webpack/webpack/issues/16981 ([#1448](https://github.com/Sitecore/jss/pull/1448)) -* `[sitecore-jss-nextjs]` Fix middleware redirect when the target use regexp with querystring ([#1449](https://github.com/Sitecore/jss/pull/1449)) +* `[sitecore-jss-nextjs]` Fix middleware redirect when the target use regexp with querystring ([#1449](https://github.com/Sitecore/jss/pull/1449)) ([#1460](https://github.com/Sitecore/jss/pull/1460)) ## 21.1.1 diff --git a/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.test.ts b/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.test.ts index 4aea83066a..fe4875bea5 100644 --- a/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.test.ts +++ b/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.test.ts @@ -531,7 +531,7 @@ describe('RedirectsMiddleware', () => { const req = createRequest({ nextUrl: { pathname: '/not-found', - search: 'abc=def', + search: '?abc=def', href: 'http://localhost:3000/found?abc=def', locale: 'en', clone() { diff --git a/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.ts b/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.ts index 1b843bc87a..0e5bfa4804 100644 --- a/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.ts +++ b/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.ts @@ -164,7 +164,7 @@ export class RedirectsMiddleware extends MiddlewareBase { ): Promise { const redirects = await this.redirectsService.fetchRedirects(siteName); const tragetURL = req.nextUrl.pathname; - const targetQS = `?${req.nextUrl.search || ''}`; + const targetQS = req.nextUrl.search || ''; return redirects.length ? redirects.find((redirect: RedirectInfo) => { @@ -175,7 +175,8 @@ export class RedirectsMiddleware extends MiddlewareBase { return ( (regexParser(pattern).test(tragetURL) || regexParser(pattern).test(`${tragetURL}${targetQS}`) || - regexParser(pattern).test(`/${req.nextUrl.locale}${tragetURL}`.toLowerCase())) && + regexParser(pattern).test(`/${req.nextUrl.locale}${tragetURL}`) || + regexParser(pattern).test(`/${req.nextUrl.locale}${tragetURL}${targetQS}`)) && (redirect.locale ? redirect.locale.toLowerCase() === req.nextUrl.locale.toLowerCase() : true)