如何在 Next.js 应用程序中的某个 URL 处提供“.html”?
How to server a ".html" at certain URL in a Next.js app?
我有一个“.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 才能工作。
0。移动您的 HTML 文件(可选)
您的文件不需要位于 ./pages
目录中。让我们把它放在 ./static
中。稍后只需将这些 route-file 占位符替换为您的真实文件名:./static/<route>/<file>.html
1。创建 API 路线
Next 让您创建 API routes 类似于您在 old-style 主机(如 Express)中的方式。只要在 ./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();
}
2。添加重写 next.config.js
在 Next 中,rewrites 的工作方式与其对应的 Apache 类似。他们将 url 位置映射到下一个 ./page
.
// export
module.exports = {
rewrites: async () => [
{source: '/<route>/<file>', destination: './pages/api/static/<route>/<file>'},
],
};
3。 运行它!
您应该可以使用常规 next dev
来测试它。当然,对 next.config.js
的更改需要您手动重启开发服务器。
如果你查看 Next 文档,你会发现你可以在 API 路由和这些重定向中使用通配符,这可能有助于你前进的方向。
我有一个“.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 才能工作。
0。移动您的 HTML 文件(可选)
您的文件不需要位于 ./pages
目录中。让我们把它放在 ./static
中。稍后只需将这些 route-file 占位符替换为您的真实文件名:./static/<route>/<file>.html
1。创建 API 路线
Next 让您创建 API routes 类似于您在 old-style 主机(如 Express)中的方式。只要在 ./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();
}
2。添加重写 next.config.js
在 Next 中,rewrites 的工作方式与其对应的 Apache 类似。他们将 url 位置映射到下一个 ./page
.
// export
module.exports = {
rewrites: async () => [
{source: '/<route>/<file>', destination: './pages/api/static/<route>/<file>'},
],
};
3。 运行它!
您应该可以使用常规 next dev
来测试它。当然,对 next.config.js
的更改需要您手动重启开发服务器。
如果你查看 Next 文档,你会发现你可以在 API 路由和这些重定向中使用通配符,这可能有助于你前进的方向。