ZEIT Now / GatsbyJS-部署到子目录

时间:2019-12-27 20:22:06

标签: gatsby zeit-now

我目前拥有一个名为 vidu.sh 的域 我现在想通过ZEIT部署Gatsby应用。我已经在仪表板上添加并配置了域(该域是在外部服务上购买的,我已经更改了名称服务器以匹配ZEIT的域名)

已部署的应用程序应该在 https://vidu.sh/an 上可用。 (请注意,在我编写此行时,请确保我的应用程序可以使用,因为我以前使用的是涉及Github Pages的配置。我现在想迁移到ZEIT,因为它可以满足我的更多需求)

是否可以将应用程序部署到要求的URL,而无需将我的gatsby应用程序源移动到名为“ / an” / 的目录中?

如果除了创建该“ / an” 目录外没有其他选择,我应该如何配置该项目以处理自定义404页面? (请参阅我的previous unanswered question

基本上,我想使用https://vidu.sh/an作为应用程序的根。

到目前为止,由于无法链接它们以实现我的目标,我已经挖掘了以下文档:

  • --prefix-paths:由Gatsby提供的标志,用于指出某个应用将托管在某个地方而不是根域(/)上。我不确定使用现在的CLI 是否会自动添加此标志。
  • now.json:我了解从根目录提供此文件将使我能够自定义现在的CLI 的行为,但是我看不到应该添加哪些内容来进行更改我的构建脚本。
  • Custom 404:似乎可以通过这种方式将404与嵌套文件夹进行匹配,因此“ / an”解决方案似乎是最可行的。我只是觉得创建该目录不是最佳选择。

更新

我尝试了以下now.json配置:

{
  "version": 2,
  "rewrites": [
    {
      "source": "/an",
      "destination": "/"
    },
    {
      "source": "/an/(.*)",
      "destination": "/$1"
    }
  ]
}

这有效,但是以某种方式我被重定向到了根域。 我怀疑是Gatsby的行为,由ZEIT处理的事情现在不会直接更改URL

有任何提示吗?

1 个答案:

答案 0 :(得分:0)

通过使用rewrites--prefix-paths来解决我的问题 解决方法如下:

package.json

{
  "scripts": {
     "build": "gatsby build --prefix-paths",
   }
}

now.json

{
  "version": 2,
  "rewrites": [
    {
      "source": "/an",
      "destination": "/"
    },
    {
      "source": "/an/(.*)",
      "destination": "/$1"
    }
  ]
}

立即致电进行部署将使用带有标志的构建脚本。服务器将配置为使用重写规则!