node.js - 如何使用 nextJs 显示自定义 410 页面
问题描述
我正在尝试在我的 nextjs 应用程序上处理 410 代码。我已经设置了一个 404 页面,因为它很容易由 nextjs 管理。但我不知道如何显示自定义 410 页面。我试图浏览_error
页面并检查,httpStatusCode
但它似乎只是为了处理5xx
错误。
有没有办法显示自定义 410 页面?而且,我应该尝试显示 410 页面还是只让浏览器显示错误(我不确定这里的最佳做法是什么)?我刚刚在我的网站上进行了“大”迁移,并且有几个 410(不取决于我)。
如果需要,我可以提供更多信息谢谢
解决方案
你可以做这样的事情。检查一个不存在的页面是否应该用 404 或 410 响应的逻辑可以根据您的需要进行修改。
// _error.js
import Error from 'next/error';
const CustomError = ({ statusCode }) => (
<Error
statusCode={statusCode}
title={
statusCode === 410
? 'The requested resource is no longer available'
: undefined
}
/>
);
const gonePages = ['gone', 'moved', 'foo/bar'];
const compareURLs = (n, h) => {
const nParts = n.split('/').filter(Boolean);
const hParts = h.split('/').filter(Boolean);
return (
nParts.length <= hParts.length &&
nParts.every((part, i) => part === hParts[i])
);
};
const getServerSideProps = async ({ req, res }) => ({
props: {
statusCode:
res.statusCode === 404 &&
gonePages.some((slug) => compareURLs(slug, req.url))
? 410
: res.statusCode,
},
});
export default CustomError;
export { getServerSideProps };
推荐阅读
- oracle - 在 SQL Developer 中,如何模拟嵌套的 for 循环以提取大量计数?
- javascript - 如何在换行符上隐藏 div
- c++ - HelloWorld C++:访问桌面文件夹的神秘请求
- javascript - 在 vuejs 中使用 vuex-persistedstate 创建多个唯一状态
- c++ - 努力让我的 switch 语句起作用
- database - 将旧 GUID (Symfony <= 5.2) 迁移到新 UUID 组件 (Symfony >= 5.3) 作为实体 ID
- sql - 修复 SQL 触发器语法
- nginx - 如何使用 Nginx 构建代理?
- system.text.json - System.Text.Json 添加了一个额外的大括号 ONLY TO END 所以它会导致异常
- php - 如何从数据库中使用动态列名在codeigniter中导入csv文件