onmyway133 / blog

🍁 What you don't know is what you haven't learned
https://onmyway133.com/
MIT License
669 stars 33 forks source link

How to handle route case sensitivity in Nextjs #933

Open onmyway133 opened 11 months ago

onmyway133 commented 11 months ago

By default, Nextjs route is case sensitive, so localhost:3000/About and localhost:3000/about are different routes.

To make uppercase routes become lowercase routes, we can add a middleware.tsx file to the src so it is same level as pages

import { NextResponse, NextRequest } from "next/server"

const Middleware = (req: NextRequest) => {
    if (req.nextUrl.pathname === req.nextUrl.pathname.toLowerCase()) {
        return NextResponse.next()
    }

    return NextResponse.redirect(
        new URL(req.nextUrl.origin + req.nextUrl.pathname.toLowerCase())
    )
}

export default Middleware