redirect - Netlify 上 Next.js 的尾随斜杠不起作用
问题描述
我们在 Netlify 上有一个 Next.js 站点,其中包含静态页面和服务器渲染页面。我们有像https://example.com/locations/berlin这样的链接,我们希望它们总是以像https://example.com/locations/berlin/这样的斜杠结尾。为了实现这一点,我们使用在trailingSlash: true
本地运行良好的 Next.js 选项。
当我们将站点部署到 Netlify 时,就会出现问题。页面总是被重定向到不带斜杠的 url,例如带有状态码 301的https://example.com/locations/berlin 。我们已经在 Netlify 构建设置中启用了Pretty URLs,但这并没有什么区别。
当我正确理解它时trailingSlash: true
,Next.js 应该像这样创建静态页面:
https://example.com/locations/berlin/index.html
但相反,它会创建这样的页面:
https://example.com/locations/berlin.html
// next.config.js
module.exports = {
target: "serverless",
trailingSlash: true,
};
对于我们的静态页面,我们使用一个pages/[...slug].js
导出静态路径的文件fallback: false
。
由于我们也使用服务器渲染页面,我们不能使用next export
.
# netlify.toml
[build]
command = "yarn build"
[[plugins]]
package = "@netlify/plugin-nextjs"
// package.json
{
...
"scripts": {
"build": "next build",
...
}
}
版本
- 下一个:10.2.0
- @netlify/plugin-nextjs:3.2.0
预期行为
- 没有尾部斜杠的页面将使用状态码 301 重定向到带有尾部斜杠的 url
- 带有斜杠的页面直接加载状态码 200
解决方案
目前似乎没有一种简单的方法可以在 Neltify 上使用 Next.js 使用尾随斜杠,因此我们决定切换到 Vercel。总体而言,该平台似乎更适合 Next.js,这并不奇怪,因为它是由同一家公司开发的。
推荐阅读
- django - 我们是否需要在 django 请求中明确关闭会话?
- c# - C# 最小值和最大值
- javascript - 使用js在可搜索的下拉列表中获取选定的文本
- kotlin - 如何从 kotlin 中的复杂数据类中检索嵌套值
- asp.net-core - 为什么我的 Swagger index.html 页面在发布后是空白的?
- python-3.x - 尝试为 tkinter 中的禁用按钮分配背景颜色时出错
- angular - Angular 2 错误 TS2339:“BookComponent”类型上不存在属性“posts”
- google-chrome - Svelte - Carbon 组件导入中断调试
- c# - 试图让按钮将我重定向到一个网站
- java - Java + Powermockito:如何替换或模拟 Thread.sleep 方法