我是Next.js的新手,我想在用户访问网站时将其重定向到默认页面,例如,如果用户的国家/地区是us
,我想将其重定向到domain.com/us
等等,这是我的尝试:
type Middleware = (req: NextRequest) => Promise<NextResponse>;
export const middleware: Middleware = async (req) => {
const response = await fetch(`http://ip-api.com/json`);
const data = await response.json();
if (data.country === "Egypt") {
console.log('Egypt')
const newPath = `/egypt${req.nextUrl.pathname}${req.nextUrl.search}`;
const newUrl = new URL(newPath, req.url);
// Redirect with the new URL
return NextResponse.redirect(newUrl, { status: 301 });
} else {
return NextResponse.next();
}
};
export const config = {
matcher: [
/*
* Match all request paths except for the ones starting with:
* - api (API routes)
* - static (static files)
* - favicon.ico (favicon file)
* - _next (debug files)
*/
"/((?!api|static|favicon.ico|_next|_next/image|images).*)"
]
};
字符串
我尝试的问题是我有这个错误err_too_many_redirects
1条答案
按热度按时间ee7vknir1#
很可能,问题是在你重定向用户之后,它会导致中间件再次重定向(和重定向)用户。这可以通过多种方法解决,最好的方法是检查URL,看看它是否已经有地理标签。
在重定向之前将此添加到中间件'if Egypt'函数中,以确保您不会得到'err_too_many_redirects'错误:
字符串