我有一个“.html”文件,我需要在我的 Next.js 应用程序中以特定路线提供服务,就像这样......
/pages/customr-route-name/my-html-file.html
所以如果我去我的网站并输入http://example.com/custom-route-name/my-html-file.html
我可以看到它
我怎样才能在 Next.js 中做到这一点?
我有一个“.html”文件,我需要在我的 Next.js 应用程序中以特定路线提供服务,就像这样......
/pages/customr-route-name/my-html-file.html
所以如果我去我的网站并输入http://example.com/custom-route-name/my-html-file.html
我可以看到它
我怎样才能在 Next.js 中做到这一点?
这需要 API 路由和 URL 重写才能开始工作。好消息是,您也可以将此模式用于其他事情(例如,如果您想生成 RSS 提要或 sitemap.xml)。
注意:您需要运行 Next 9.5 才能正常工作。
您的文件不需要位于./pages
目录中。让我们把它放进去./static
。稍后只需将这些路由文件占位符替换为您的真实文件名:./static/<route>/<file>.html
Next 允许您创建类似于在 Express 等旧式主机中的API 路由。任何名称都可以,只要它在./pages/api
. 我们称之为./pages/api/static/<route>/<file>.js
// import
import fs from 'fs';
// vars
const filename = './static/<route>/<file>.html';
// export
export default async function api(req, res) {
res.setHeader('Content-Type', 'text/html; charset=utf-8');
res.write(await fs.readFileSync(filename, 'utf-8'));
res.end();
}
next.config.js
在 Next 中,重写的工作与 apache 对应的工作类似。他们将 url 位置映射到 Next ./page
。
// export
module.exports = {
rewrites: async () => [
{source: '/<route>/<file>', destination: './pages/api/static/<route>/<file>'},
],
};
您应该能够使用常规的next dev
. 当然,更改next.config.js
需要您手动重新启动开发服务器。
如果您查看 Next 文档,您会发现您可以在 API 路由和这些重定向中使用通配符,这可能有助于您前进的方向。