next.js public path issue

pishio(69)
Published in
dev
Words
282
Reading
2 min
Listen
Play
1y

IMG_5234.png

Why does a 500 error occur when accessing /images/favicon.png in Next.js with dynamic routing?

When using dynamic routing like app/[path1]/[path2]/[path3]/page.tsx in Next.js 13+ (especially with the app directory), every request first tries to match a route. If you request /images/favicon.png, Next.js may interpret this as a dynamic route and attempt to render a page, but the parameters (params) won’t match expectations, leading to a 500 error. This happens because a static file request is mistakenly treated as a page route[1].

Solutions

1. Exclude static files in middleware.ts using matcher

Update your middleware.ts to ignore static asset requests:

export const config = {
  matcher: [
    // Exclude static assets
    '/((?!_next/static|_next/image|favicon.ico|images/|icons/|fonts/).*)',
  ],
};

This prevents requests like /images/* and /favicon.ico from being processed by middleware and routed as pages[1].

2. Update rewrites in next.config.js

If you use rewrites, make sure to exclude static file paths:

async rewrites() {
  return [
    {
      source: '/((?!images|_next|favicon.ico).*)',
      destination: '/[path1]/[path2]/[path3]',
    },
  ];
}

This ensures static files are not sent to dynamic routes[1].

3. Fallback handling in dynamic route components (not recommended)

You can manually filter static file requests in your page component, but this is only a workaround and not recommended for production[1].

Summary Table

CauseSolution
Static file request matched as dynamic routeExclude static files in middleware.ts and next.config.js rewrites[1]

For best results, use the matcher or rewrite exclusion methods to prevent static file requests from being routed as pages[1].

Sources
[1] next.js 미들웨어 https://pish.tistory.com/m/137
[2] [알고리즘/자바스크립트] 트리에서 잎노드 개수 구하기 (Tree Count ... https://im-developer.tistory.com/m/137
[3] BOJ2665_미로만들기 - Deviloper https://high-developer.tistory.com/137
[4] [Java] 컬렉션(collection) (컨테이너(container)) - 아삭 - 티스토리 https://bornsoon.tistory.com/137
[5] [WK8-M/T/W/Th/F] Title to be written - Hajin's blog - 티스토리 https://optimizemarginality.tistory.com/137
[6] [프로젝트]Map 수정전 기록용 (에러원인?) https://developeritchaeyachae.tistory.com/137
[7] Pish, posh, said Hieronymus Bosch : Willard, Nancy : Free Download, Borrow, and Streaming : Internet Archive https://archive.org/details/pishposhsaidhier0000will/mode/1up?view=theater&ui=embed&wrapper=false
[8] [Next.js] 개인과제 트러블슈팅 (동적 라우팅 경로, 클라이언트 컴포넌트 ... https://nninyeong.tistory.com/137
[9] SKT FLY AI : 14일차 - Docker와 Kubernetes - hsloth의 코드 슬롯 https://suloth.tistory.com/137

next.js public path issue | Ecency