Next JS - 中间件 - 错误:URL 格式错误。请仅使用绝对 URL

Igo*_*ves 8 reactjs next.js

早上好!我已经尝试了几个小时如何在中间件中制作重定向页面。我阅读了文档并使用 NextResponse.redirect('/about') 并收到一条消息:“错误:URL 格式错误。请仅使用绝对 URL -”

在此输入图像描述

如果我输入绝对 URL:http://localhost:3000/about,浏览器会多次执行请求,如下图所示。

在此输入图像描述

我在Middlewarerelative URLs中尝试了这个解决方案,但错误仍然存​​在。

有人有解决办法吗?谢谢。

这是我在 _middleware.ts 中的代码:

import { NextResponse } from 'next/server';
import type { NextFetchEvent, NextRequest } from 'next/server';

export function middleware(request: NextRequest, ev: NextFetchEvent) {
  return NextResponse.redirect('/about')
}
Run Code Online (Sandbox Code Playgroud)

文件夹和文件本地化:

在此输入图像描述

Dec*_*bal 13

新版本的 next 确实不再允许这样做:

next/dist/server/web/utils.js (136:0) @ Object.validateURL

我没有查阅官方文档,我的解决方案是传递起源:

export function middleware(req: NextRequest): NextResponse | null {
  const { pathname, origin } = req.nextUrl

  return NextResponse.rewrite(`${origin}/about`)
}
Run Code Online (Sandbox Code Playgroud)