主题
中间件
定义中间件
在 Next.js 中,中间件是位于请求和响应之间的函数,可以用来处理请求、修改响应或执行其他操作。中间件文件必须命名为 middleware.js 或 middleware.ts。
重定向
ts
import { NextResponse, type NextRequest } from 'next/server'
export function middleware(request: NextRequest) {
return NextResponse.redirect(new URL('/', request.url))
}
export const config = {
matcher: '/profile', // 只匹配 /profile 路径
}或者:
ts
import { NextResponse, type NextRequest } from 'next/server'
export function middleware(request: NextRequest) {
if (request.nextUrl.pathname === '/profile') {
return NextResponse.redirect(new URL('/', request.url))
}
}重写
ts
import { NextResponse, type NextRequest } from 'next/server'
export function middleware(request: NextRequest) {
if (request.nextUrl.pathname === '/profile') {
return NextResponse.rewrite(new URL('/', request.url))
}
}请求放行
ts
import { NextResponse, type NextRequest } from 'next/server'
export function middleware(request: NextRequest) {
const response = NextResponse.next()
// 进行一些操作,比如:通过 cookie 设置主题、添加自定义头 ……
const themePreference = request.cookies.get('theme')
if (!themePreference) {
response.cookies.set('theme', 'dark')
}
response.headers.set('x-custom-header', 'value')
return response
}