ZEIT Now/GatsbyJS-部署到子目录

ZEIT Now/GatsbyJS-部署到子目录,gatsby,vercel,Gatsby,Vercel,我目前拥有一个名为vidu.sh的域名 我现在想通过ZEIT部署一个盖茨比应用程序。我已经在我的仪表板中添加并配置了域(该域是通过外部服务购买的,我已经更改了名称服务器以匹配ZEIT的one and all's good) 部署的应用程序应在上可用。(请注意,在我写这一行时,我的应用程序可能是可用的,因为我以前的配置涉及Github页面。我想现在迁移到ZEIT,因为它更符合我的需要) 有没有一种方法可以将应用程序部署到所请求的URL,而无需将我的gatsby应用程序源代码移动到名为“/an”/的

我目前拥有一个名为vidu.sh的域名 我现在想通过ZEIT部署一个盖茨比应用程序。我已经在我的仪表板中添加并配置了域(该域是通过外部服务购买的,我已经更改了名称服务器以匹配ZEIT的one and all's good)

部署的应用程序应在上可用。(请注意,在我写这一行时,我的应用程序可能是可用的,因为我以前的配置涉及Github页面。我想现在迁移到ZEIT,因为它更符合我的需要)

有没有一种方法可以将应用程序部署到所请求的URL,而无需将我的gatsby应用程序源代码移动到名为“/an”/的目录中

如果除了创建“/an”目录之外没有其他选择,我应该如何配置项目以处理自定义404页面?(见附件)

基本上,我想用它作为我的应用程序的根

  • 应重定向到(HTTP 301)
到目前为止,我已经挖掘了以下文档,但我无法将它们链接起来以实现我的目标:

  • :盖茨比提供的标志,用于说明应用程序将托管在某个位置而不是根域(/)上。我不确定使用now CLI将自动添加此标志
  • :我知道从根目录提供此文件将允许我自定义now CLI的行为,但我看不出应该添加什么来更改构建脚本
  • :通过此选项,似乎可以将404与嵌套文件夹进行匹配,因此“/an”解决方案似乎是最可行的。我只是觉得创建那个目录不是最好的选择
更新

{
  "scripts": {
     "build": "gatsby build --prefix-paths",
   }
}
{
  "version": 2,
  "rewrites": [
    {
      "source": "/an",
      "destination": "/"
    },
    {
      "source": "/an/(.*)",
      "destination": "/$1"
    }
  ]
}
我尝试了以下
now.json
config:

{
  "version": 2,
  "rewrites": [
    {
      "source": "/an",
      "destination": "/"
    },
    {
      "source": "/an/(.*)",
      "destination": "/$1"
    }
  ]
}
这是可行的,但不知怎的,我被重定向到了根域。 我怀疑这是盖茨比的行为,ZEIT现在直接处理的事情不会改变URL


有什么提示吗?

通过使用
重写
前缀路径
以下是解决方案:

package.json

{
  "scripts": {
     "build": "gatsby build --prefix-paths",
   }
}
{
  "version": 2,
  "rewrites": [
    {
      "source": "/an",
      "destination": "/"
    },
    {
      "source": "/an/(.*)",
      "destination": "/$1"
    }
  ]
}
now.json

{
  "scripts": {
     "build": "gatsby build --prefix-paths",
   }
}
{
  "version": 2,
  "rewrites": [
    {
      "source": "/an",
      "destination": "/"
    },
    {
      "source": "/an/(.*)",
      "destination": "/$1"
    }
  ]
}
现在调用deploy将使用带有标志的构建脚本。服务器将配置为使用重写规则