File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import { NextResponse } from 'next/server' ;
2+ import type { NextRequest } from 'next/server' ;
3+
4+ export function middleware ( request : NextRequest ) {
5+ const pathname = request . nextUrl . pathname ;
6+
7+ // Redirect tracks URLs with spaces (decoded from %20) to dashed versions
8+ if ( pathname . startsWith ( '/tracks/' ) ) {
9+ const segments = pathname . split ( '/' ) ;
10+ let hasSpace = false ;
11+ const fixedSegments = segments . map ( ( seg ) => {
12+ if ( seg . includes ( ' ' ) ) {
13+ hasSpace = true ;
14+ return seg . replace ( / / g, '-' ) ;
15+ }
16+ return seg ;
17+ } ) ;
18+
19+ if ( hasSpace ) {
20+ const url = request . nextUrl . clone ( ) ;
21+ url . pathname = fixedSegments . join ( '/' ) ;
22+ return NextResponse . redirect ( url , 301 ) ;
23+ }
24+ }
25+
26+ return NextResponse . next ( ) ;
27+ }
28+
29+ export const config = {
30+ matcher : '/tracks/:path*' ,
31+ } ;
You can’t perform that action at this time.
0 commit comments