概览在边缘读取国家与货币信息,重写到本地化与定价页面。通过 `x-vercel-ip-country` 或 `cf-ipcountry` 等头实现通用地理识别,并以 Cookie 固定选择。middleware.tsimport { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' const CURRENCY_BY_COUNTRY: Record<string, string> = { US: 'USD', GB: 'GBP', JP: 'JPY', CN: 'CNY', EU: 'EUR', DE: 'EUR', FR: 'EUR', IN: 'INR', AU: 'AUD' } export function middleware(req: NextRequest) { const url = req.nextUrl.clone() const country = req.headers.get('x-vercel-ip-country') || req.headers.get('cf-ipcountry') || 'US' const currency = CURRENCY_BY_COUNTRY[country] || 'USD' const fixed = req.cookies.get('currency')?.value const cur = fixed || currency if (!fixed) { const res = NextResponse.next() res.cookies.set('currency', cur, { path: '/' }) return res } if (url.pathname === '/pricing') { url.pathname = `/pricing/${cur}` return NextResponse.rewrite(url) } return NextResponse.next() } export const config = { matcher: ['/((?!_next|api|static).*)'] } 治理要点以 Cookie 固定货币,保证跨页一致性。提供用户切换入口,避免自动选择与手动选择冲突。与缓存与 SEO 协作,确保 canonical 指向标准页面。验证与指标浏览器:现代浏览器;边缘环境兼容Next.js:15.0+;Edge Runtime:稳定个性化重写可靠;国际化与定价体验一致

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
1.786900s