最近有关中间件的更改https://nextjs.org/docs/messages/middleware-upgrade-guide。
现在中间件也会被/_next和的请求触发/favicon.ico。
仅针对文件夹请求触发它的最佳方法是什么/pages?有匹配器,但是在其中输入所有页面会很麻烦。
我目前正在使用中间件来检查 cookie 是否存在,并在用户访问页面时重定向用户。例如,如果用户访问/并且用户尚未登录,则将用户重定向到/login。
现在中间件已经稳定(>=12.2),您可以在匹配器上使用正则表达式来排除某些路径。
export const config = {
// matcher solution for public, api, assets and _next exclusion
matcher: "/((?!api|static|.*\\..*|_next).*)",
};
Run Code Online (Sandbox Code Playgroud)
参考: https: //github.com/vercel/next.js/discussions/36308#discussioncomment-3758041
bna*_*mhz -2
这是中间件的片段:
// middleware.ts
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
// This function can be marked `async` if using `await` inside
export function middleware(request: NextRequest) {
return NextResponse.redirect(new URL('/about-2', request.url))
}
// See "Matching Paths" below to learn more
export const config = {
matcher: '/about/:path*',
}
Run Code Online (Sandbox Code Playgroud)
如果您希望中间件在所有路径上运行:
export const config = {
matcher: '/:path*',
}
Run Code Online (Sandbox Code Playgroud)
你尝试过这个吗?
| 归档时间: |
|
| 查看次数: |
7970 次 |
| 最近记录: |