3 回答
TA贡献1834条经验 获得超8个赞
获得 GoogleBot 理解的真实“HTTP 404”响应的一种方法是生成 404 服务器端。
首先,在 /pages/404.js 中编写默认的 404.js 页面。
之后,将此功能添加到您的动态页面中:
export async function getServerSideProps (context) {
// this will be called server-side only
const pid = context.params.pid;
// connect to your db to check if it exists, make a webservice call...
if (!checkIfExists(pid)) {
return { notFound: true };
// this will display your /pages/404.js error page,
// in the current page, with the 404 http status code.
}
return {
props: {
pid,
// you may also add here the webservice content
// to generate your page and avoid a client-side webservice call
}
};
};
TA贡献1799条经验 获得超9个赞
您可以进行验证,检查参数是否有效,并相应地重定向
nextjs 负责pages/404.js,除非您想自定义它,否则不需要显式添加它。
考虑以下页面pages/post/[pid].js:
import { useRouter } from 'next/router'
const Post = () => {
const router = useRouter()
const { pid } = router.query
// if id is not valid, explicitly redirect to 404 page
if(!pid){
router.push('/404')
}
return <p>Post: {pid}</p>
}
export default Post
TA贡献1829条经验 获得超4个赞
App Router 的方法是调用notFound()函数:
import { notFound } from 'next/navigation'
async function fetchUser(id) {
const res = await fetch('https://...')
if (!res.ok) return undefined
return res.json()
}
export default async function Profile({ params }) {
const user = await fetchUser(params.id)
if (!user) {
notFound()
}
// ...
}
添加回答
举报