以下のようにするとサーバーコンポーネントで現在のURLを取得できます。
middleware.ts
import { NextResponse } from 'next/server'
import { NextRequest } from 'next/server'
export async function middleware(req: NextRequest) {
const requestHeaders = new Headers(req.headers)
requestHeaders.set('x-url', req.url)
return NextResponse.next({
request: {
headers: requestHeaders,
}
})
}
layout.tsx
import { headers } from 'next/headers';
export default function RootLayout() {
const headersList = headers()
const header_url = headers().get('x-url') || "";
}
パスを取得するには以下のようにします。
middleware.ts
import { NextResponse } from 'next/server'
import { NextRequest } from 'next/server'
export async function middleware(req: NextRequest) {
const requestHeaders = new Headers(req.headers)
requestHeaders.set('x-pathname', req.nextUrl.pathname)
return NextResponse.next({
request: {
headers: requestHeaders,
}
})
}
layout.tsx
import { headers } from 'next/headers';
export default function RootLayout() {
const headersList = headers()
const pathname = headers().get('x-pathname') || "";
}