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
Cause | Solution |
---|---|
Static file request matched as dynamic route | Exclude 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