javascript Next.js,重定向到404 Not Found Page inside getServerSideProps

13z8s7eq  于 2023-05-16  发布在  Java
关注(0)|答案(1)|浏览(123)

此问题已在此处有答案

Dynamic route prevents redirecting to 404 page in Next.js(2个答案)
11个月前关闭。
我正在寻找一个最佳做法,在服务器端呈现的页面上处理HTTP 404,如果所请求的页面没有一个底层的服务器端资源。
例如,假设请求的页面是http://localhost:3000/places/5。在我的SSG实现中:

export async function getServerSideProps(context) {
  const placeId = context.params.placeId;
  const places = await getPlace(placeId);
  
  if (!places.length) { /* is there anything here I can do to facilitate a 404? this place does not exist in the db */ }

  return {
    props: {
      places[0],
    },
  };
}

这应该是不言自明的,但是如果请求的id,在本例中,5不是我的DB中的一个位置,我如何将其作为HTTP 404处理?

mwkjh3gx

mwkjh3gx1#

你可以通过返回一个像下面代码一样的对象来做到这一点,使用notFound: true。以下是官方文档中的一句话:
notFound布尔值允许页面返回404状态和404页面。

export async function getServerSideProps(context) {
  const placeId = context.params.placeId;
  const places = await getPlace(placeId);

  if (!places.length) { 
   return {
     notFound: true,
   }
  }

  return {
    props: {
      places[0],
    },
  };
}

相关问题