【发布时间】:2022-09-30 14:43:39
【问题描述】:
我有一个带有两个项目的 monorepo - web 和 docs。这些都是他们自己的 Vercel 项目,web 项目安装在 https://example.com 和 docs 安装在 https://docs.example.com。所有这些都按预期工作。
我现在想在https://example.com/docs 上提供docs 项目。在web 项目中,我在vercel.json 文件中设置了以下重写。
{
\"rewrites\": [
{
\"source\": \"/docs/:match*\",
\"destination\": \"https://docs.example.com/:match*\"
},
{ \"source\": \"/(.*)\", \"destination\": \"/\" }
]
}
这适用于主索引文件,但所有相应的 css 和 js 文件都会导致 404\'s。浏览器在https://example.com/_next 寻找那些不正确的文件,它应该在https://docs.example.com/_next 寻找。
我该如何进行这项工作?
-
您是否考虑过在文档应用程序中设置
basePath? -
我无法将
web和docs项目都设置为example.com。如果我在docs应用程序中使用basePath,docs应用程序将只是植根于docs.example.com/docs,这不是我想要的。 -
在两个位置拥有相同的内容是不好的做法。选择 docs.example.com 或 example.com/docs 作为正确的位置。为此位置设置正确的 basePath。然后使用重定向而不是从另一个位置重写到这个位置。
-
@some-user 是的,这就是我真正想要的。我不知道如何让它工作。我无法将这两个项目都设置为在 example.com 上托管,所以我将一个项目设置为 docs.example.com,以为我可以重定向它。您能否更明确地说明每个项目应该使用什么域以及重写应该是什么?
标签: next.js url-rewriting vercel