bounty将在6天后过期。回答此问题可获得+500的声望奖励。RussellHarrower正在寻找标准答案:真的需要找到一个解决这个问题的方法。
我已经把这个问题归结到了中间件上,因为它破坏了一切。我们在Plesk上托管了这个网站,所以我们知道可能有一些服务器做得不一样。
然而,当我去https://exampl.com/appstore我应该得到一个好看的页面,但现在我得到x1c 0d1x
我已经尝试了一切来修复它,所以我想我会张贴在这里。
// middleware.ts
import { NextRequest, NextResponse, userAgent } from 'next/server'
export function middleware(request: NextRequest) {
const { os } = userAgent(request)
if(request.nextUrl.pathname === "/appstore")
{
if(os.name === "iOS"){
return NextResponse.redirect('https://apps.apple.com/au/app/drn1/id1491656217')
}
if(os.name === "Android"){
return NextResponse.redirect('https://play.google.com/store/apps/details?id=com.drn1.drn_player')
}
}
};
export const config = {
matcher: [
'/appstore'
],
}
不过,我可以确认,在Vercel服务器上,它工作正常-没有任何问题(https://drn-1-next-js.vercel.app/appstore)。
这让我认为这是一个plesk问题,或者是NextJS开发团队编写中间件的方式。
1条答案
按热度按时间jslywgbw1#
我认为这可能是一个问题。
===
可能会有令人惊讶的效果。它不是万能的。我见过API返回 Package 值,然后===
失败的情况。在使用===
之前,请考虑是否有任何隐式转换会导致问题。就我所知,没有任何合理的隐式转换会导致if(os.name == "Android")
产生错误匹配。考虑到: