ZEIT Now/GatsbyJS - 部署到子目录
ZEIT Now/GatsbyJS - Deploy to subdirectory
我目前拥有一个名为 vidu.sh 的域
我现在想通过 ZEIT 部署一个 Gatsby 应用程序。我已经在我的仪表板中添加并配置了域(域是在外部服务上购买的,我已经更改了名称服务器以匹配 ZEIT 的一个,一切都很好)
部署的应用程序应该在 https://vidu.sh/an 可用。 (请注意,在我写这行时,我的应用程序可能可用,因为我之前的配置涉及 Github 页。我现在想迁移到 ZEIT,因为它更符合我的需求)
有没有一种方法可以将应用程序部署到所询问的 URL 而无需将我的 gatsby 应用程序源移动到名为 "/an"/ 的目录中?
如果除了创建 "/an" 目录别无选择,我应该如何配置项目以处理自定义 404 页面? (看我的previous unanswered question)
基本上,我想使用 https://vidu.sh/an 作为我的应用程序的根目录。
- https://vidu.sh 应该重定向到 https://vidu.sh/an (HTTP 301)
到目前为止,我已经挖掘了以下文档,但我无法 link 它们实现我的目标:
- --prefix-paths:Gatsby 提供的标志,用于指出应用程序将托管在某处而不是根域 (/) 上。我不确定使用 now CLI 是否会自动添加此标志。
- now.json:我知道从我的根目录提供这个文件将允许我自定义 now CLI 的行为,但我看不到什么应该添加以更改我的构建脚本。
- Custom 404:看起来似乎可以通过这种方式将 404 匹配到嵌套文件夹,因此“/an”解决方案似乎是最可行的。我只是觉得创建那个目录不是最好的选择。
更新:
我尝试了以下 now.json
配置:
{
"version": 2,
"rewrites": [
{
"source": "/an",
"destination": "/"
},
{
"source": "/an/(.*)",
"destination": "/"
}
]
}
这有效,但不知何故我被重定向到根域。
我怀疑这是 Gatsby 的行为,ZEIT 现在直接处理的事情不会改变 URL
有什么提示吗?
使用 rewrites
和 --prefix-paths
设法解决了我的问题
这是解决方案:
package.json:
{
"scripts": {
"build": "gatsby build --prefix-paths",
}
}
now.json:
{
"version": 2,
"rewrites": [
{
"source": "/an",
"destination": "/"
},
{
"source": "/an/(.*)",
"destination": "/"
}
]
}
现在调用部署将使用带有标志的构建脚本。服务器将配置为使用重写规则!
我目前拥有一个名为 vidu.sh 的域 我现在想通过 ZEIT 部署一个 Gatsby 应用程序。我已经在我的仪表板中添加并配置了域(域是在外部服务上购买的,我已经更改了名称服务器以匹配 ZEIT 的一个,一切都很好)
部署的应用程序应该在 https://vidu.sh/an 可用。 (请注意,在我写这行时,我的应用程序可能可用,因为我之前的配置涉及 Github 页。我现在想迁移到 ZEIT,因为它更符合我的需求)
有没有一种方法可以将应用程序部署到所询问的 URL 而无需将我的 gatsby 应用程序源移动到名为 "/an"/ 的目录中?
如果除了创建 "/an" 目录别无选择,我应该如何配置项目以处理自定义 404 页面? (看我的previous unanswered question)
基本上,我想使用 https://vidu.sh/an 作为我的应用程序的根目录。
- https://vidu.sh 应该重定向到 https://vidu.sh/an (HTTP 301)
到目前为止,我已经挖掘了以下文档,但我无法 link 它们实现我的目标:
- --prefix-paths:Gatsby 提供的标志,用于指出应用程序将托管在某处而不是根域 (/) 上。我不确定使用 now CLI 是否会自动添加此标志。
- now.json:我知道从我的根目录提供这个文件将允许我自定义 now CLI 的行为,但我看不到什么应该添加以更改我的构建脚本。
- Custom 404:看起来似乎可以通过这种方式将 404 匹配到嵌套文件夹,因此“/an”解决方案似乎是最可行的。我只是觉得创建那个目录不是最好的选择。
更新:
我尝试了以下 now.json
配置:
{
"version": 2,
"rewrites": [
{
"source": "/an",
"destination": "/"
},
{
"source": "/an/(.*)",
"destination": "/"
}
]
}
这有效,但不知何故我被重定向到根域。 我怀疑这是 Gatsby 的行为,ZEIT 现在直接处理的事情不会改变 URL
有什么提示吗?
使用 rewrites
和 --prefix-paths
设法解决了我的问题
这是解决方案:
package.json:
{
"scripts": {
"build": "gatsby build --prefix-paths",
}
}
now.json:
{
"version": 2,
"rewrites": [
{
"source": "/an",
"destination": "/"
},
{
"source": "/an/(.*)",
"destination": "/"
}
]
}
现在调用部署将使用带有标志的构建脚本。服务器将配置为使用重写规则!