重定向

处理来自重定向模块的重定向。


本指南使用 translatedPathFromContext,它在 next-drupal ^1.1.0 中可用。


Next.js

要在 Next.js 中使用重定向,您可以在 next.config.js 中配置 redirects 键。

next.config.js

module.exports = {
async redirects() {
return [
{
source: "/about",
destination: "/",
permanent: true,
},
]
},
}

重定向模块

要处理来自 Drupal (重定向模块) 的重定向,您可以使用 translatedPathFromContext

以下是如何在 getStaticProps 中处理重定向。

pages/[...slug].tsx

import { DrupalNode } from "next-drupal"
export async function getStaticProps(
context
): Promise<GetStaticPropsResult<NodePageProps>> {
// Get information about the path.
const path = await drupal.translatePathFromContext(context)
if (!path) {
return {
notFound: true,
}
}
// Check for redirect.
if (path.redirect?.length) {
const [redirect] = path.redirect
return {
redirect: {
destination: redirect.to,
permanent: redirect.status === "301",
},
}
}
// No redirect. Fetch the resource for this type.
const resource = await drupal.getResourceFromContext<DrupalNode>(
path,
context
)
}

使用 fallback: "blocking"getStaticPaths 中,这将缓存和处理在 Drupal 中配置的重定向,并且仍然可以使用增量静态再生。