diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e7c2c00f8..f7f04a14b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Our versioning strategy is as follows: ### 🐛 Bug Fixes +* `[tempaltes/nextjs]` `[templates/nextjs-sxa]` `[sitecore-jss-nexjts]` Redirects don't work when file extensions present in a route ([#1566](https://github.com/Sitecore/jss/pull/1566)) * `[templates/vue]` "lint" command is failing due to bug introduced by eslint-plugin-prettier ([#1563](https://github.com/Sitecore/jss/pull/1563)) * `[templates/nextjs-sxa]` Fix font awesome - added CDN instead of using node_modules(problem with CORS) ([#1536](https://github.com/Sitecore/jss/pull/1536) ([#1545](https://github.com/Sitecore/jss/pull/1545)) * `[templates/nextjs-sxa]` Fix menu component of third-level menu. ([#1540](https://github.com/Sitecore/jss/pull/1540)) ([#1546](https://github.com/Sitecore/jss/pull/1546)) diff --git a/packages/create-sitecore-jss/src/templates/nextjs-sxa/src/lib/middleware/plugins/redirects.ts b/packages/create-sitecore-jss/src/templates/nextjs-sxa/src/lib/middleware/plugins/redirects.ts index 825bcc434d..c1333ea780 100644 --- a/packages/create-sitecore-jss/src/templates/nextjs-sxa/src/lib/middleware/plugins/redirects.ts +++ b/packages/create-sitecore-jss/src/templates/nextjs-sxa/src/lib/middleware/plugins/redirects.ts @@ -16,7 +16,7 @@ class RedirectsPlugin implements MiddlewarePlugin { // These should match those in your next.config.js (i18n.locales). locales: ['en'], // This function determines if a route should be excluded from RedirectsMiddleware. - // Certain paths are ignored by default (e.g. files and Next.js API routes), but you may wish to exclude more. + // Certain paths are ignored by default (e.g. Next.js API routes), but you may wish to exclude more. // This is an important performance consideration since Next.js Edge middleware runs on every request. excludeRoute: () => false, // This function determines if the middleware should be turned off. diff --git a/packages/create-sitecore-jss/src/templates/nextjs/src/middleware.ts b/packages/create-sitecore-jss/src/templates/nextjs/src/middleware.ts index 667e539b86..21f26c038a 100644 --- a/packages/create-sitecore-jss/src/templates/nextjs/src/middleware.ts +++ b/packages/create-sitecore-jss/src/templates/nextjs/src/middleware.ts @@ -14,7 +14,7 @@ export const config = { * 3. /sitecore/api (Sitecore API routes) * 4. /- (Sitecore media) * 5. /healthz (Health check) - * 6. all root files inside /public (e.g. /favicon.ico) + * 6. all root files inside /public */ - matcher: ['/', '/((?!api/|_next/|healthz|sitecore/api/|-/|[\\w-]+\\.\\w+).*)'], + matcher: ['/', '/((?!api/|_next/|healthz|sitecore/api/|-/|favicon.ico|sc_logo.svg).*)'], }; diff --git a/packages/sitecore-jss-nextjs/src/middleware/middleware.test.ts b/packages/sitecore-jss-nextjs/src/middleware/middleware.test.ts index a975c7076d..218e21c537 100644 --- a/packages/sitecore-jss-nextjs/src/middleware/middleware.test.ts +++ b/packages/sitecore-jss-nextjs/src/middleware/middleware.test.ts @@ -113,7 +113,6 @@ describe('MiddlewareBase', () => { it('default', () => { const middleware = new SampleMiddleware({ siteResolver: new MockSiteResolver([]) }); - expect(middleware['excludeRoute']('/src/image.png')).to.equal(true); expect(middleware['excludeRoute']('/api/layout/render')).to.equal(true); expect(middleware['excludeRoute']('/sitecore/render')).to.equal(true); expect(middleware['excludeRoute']('/_next/webpack')).to.equal(true); diff --git a/packages/sitecore-jss-nextjs/src/middleware/middleware.ts b/packages/sitecore-jss-nextjs/src/middleware/middleware.ts index faf0c91c48..35637f5406 100644 --- a/packages/sitecore-jss-nextjs/src/middleware/middleware.ts +++ b/packages/sitecore-jss-nextjs/src/middleware/middleware.ts @@ -48,7 +48,6 @@ export abstract class MiddlewareBase { protected excludeRoute(pathname: string) { return ( - pathname.includes('.') || // Ignore files pathname.startsWith('/api/') || // Ignore Next.js API calls pathname.startsWith('/sitecore/') || // Ignore Sitecore API calls pathname.startsWith('/_next') || // Ignore next service calls diff --git a/packages/sitecore-jss-nextjs/src/middleware/multisite-middleware.ts b/packages/sitecore-jss-nextjs/src/middleware/multisite-middleware.ts index 69510af259..75666db6b5 100644 --- a/packages/sitecore-jss-nextjs/src/middleware/multisite-middleware.ts +++ b/packages/sitecore-jss-nextjs/src/middleware/multisite-middleware.ts @@ -37,6 +37,11 @@ export class MultisiteMiddleware extends MiddlewareBase { }; } + protected excludeRoute(pathname: string): boolean | undefined { + // ignore files + return pathname.includes('.') || super.excludeRoute(pathname); + } + private handler = async (req: NextRequest, res?: NextResponse): Promise => { const pathname = req.nextUrl.pathname; const language = this.getLanguage(req); diff --git a/packages/sitecore-jss-nextjs/src/middleware/personalize-middleware.ts b/packages/sitecore-jss-nextjs/src/middleware/personalize-middleware.ts index 8975e2afe5..2bd332aefc 100644 --- a/packages/sitecore-jss-nextjs/src/middleware/personalize-middleware.ts +++ b/packages/sitecore-jss-nextjs/src/middleware/personalize-middleware.ts @@ -115,6 +115,11 @@ export class PersonalizeMiddleware extends MiddlewareBase { }; } + protected excludeRoute(pathname: string): boolean | undefined { + // ignore files + return pathname.includes('.') || super.excludeRoute(pathname); + } + private handler = async (req: NextRequest, res?: NextResponse): Promise => { const pathname = req.nextUrl.pathname; const language = this.getLanguage(req); 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 6ac1819fec..794ffb8fb9 100644 --- a/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.test.ts +++ b/packages/sitecore-jss-nextjs/src/middleware/redirects-middleware.test.ts @@ -259,7 +259,6 @@ describe('RedirectsMiddleware', () => { it('default', async () => { const { middleware } = createMiddleware(); - await test('/src/image.png', middleware); await test('/api/layout/render', middleware); await test('/sitecore/render', middleware); await test('/_next/webpack', middleware); @@ -272,7 +271,6 @@ describe('RedirectsMiddleware', () => { excludeRoute, }); - await test('/src/image.png', middleware); await test('/api/layout/render', middleware); await test('/sitecore/render', middleware); await test('/_next/webpack', middleware);