diff --git a/packages/next/server/next-server.ts b/packages/next/server/next-server.ts index afd8068e41a1..50fbdea8624a 100644 --- a/packages/next/server/next-server.ts +++ b/packages/next/server/next-server.ts @@ -73,6 +73,7 @@ import { loadEnvConfig } from '@next/env' import { getCustomRoute } from './server-route-utils' import { urlQueryToSearchParams } from '../shared/lib/router/utils/querystring' import ResponseCache from '../server/response-cache' +import { removePathTrailingSlash } from '../client/normalize-trailing-slash' export * from './base-server' @@ -1029,7 +1030,8 @@ export default class NextNodeServer extends BaseServer { }, }) - if (!this.middleware?.some((m) => m.match(parsedUrl.pathname))) { + const normalizedPathname = removePathTrailingSlash(parsedUrl.pathname) + if (!this.middleware?.some((m) => m.match(normalizedPathname))) { return { finished: false } } diff --git a/packages/next/shared/lib/router/utils/parse-next-url.ts b/packages/next/shared/lib/router/utils/parse-next-url.ts index a0f1090e2b5e..57985ecfaf0c 100644 --- a/packages/next/shared/lib/router/utils/parse-next-url.ts +++ b/packages/next/shared/lib/router/utils/parse-next-url.ts @@ -5,7 +5,6 @@ import type { NextConfig, DomainLocale } from '../../../../server/config-shared' import type { ParsedUrl } from './parse-url' import type { PathLocale } from '../../i18n/normalize-locale-path' import { hasBasePath, replaceBasePath } from '../../../../server/router' -import { removePathTrailingSlash } from '../../../../client/normalize-trailing-slash' interface Params { headers?: { [key: string]: string | string[] | undefined } @@ -39,7 +38,6 @@ export function parseNextUrl({ headers, nextConfig, url = '/' }: Params) { } } - urlParsed.pathname = removePathTrailingSlash(urlParsed.pathname) return urlParsed } diff --git a/test/production/react-18-streaming-ssr/index.test.ts b/test/production/react-18-streaming-ssr/index.test.ts index f2deb900787a..7d1114b36a0b 100644 --- a/test/production/react-18-streaming-ssr/index.test.ts +++ b/test/production/react-18-streaming-ssr/index.test.ts @@ -1,7 +1,6 @@ import { createNext } from 'e2e-utils' import { NextInstance } from 'test/lib/next-modes/base' import { fetchViaHTTP, renderViaHTTP } from 'next-test-utils' -import webdriver from 'next-webdriver' describe('react 18 streaming SSR in minimal mode', () => { let next: NextInstance