【问题标题】:ZEIT Now/GatsbyJS - Deploy to subdirectoryZEIT Now/GatsbyJS - 部署到子目录
【发布时间】:2019-12-30 06:47:59
【问题描述】:

我目前拥有一个名为 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 提供的标志,用于说明应用程序将托管在某处而不是根域 (/) 上。我不确定使用 now CLI 是否会自动添加此标志。
  • now.json:我知道从我的根目录提供这个文件将允许我自定义 now CLI 的行为,但我看不到应该添加什么来改变我的构建脚本。
  • Custom 404:看起来有可能通过这种方式将 404 匹配到嵌套文件夹,因此“/an”解决方案似乎是最可行的。我只是觉得创建那个目录不是最好的选择。

更新

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

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

这可行,但不知何故我被重定向到根域。 我怀疑这是 Gatsby 的行为,ZEIT 现在直接处理的事情不会改变 URL

有什么提示吗?

【问题讨论】:

    标签: gatsby vercel


    【解决方案1】:

    通过使用 rewrites--prefix-paths 设法解决了我的问题 这是解决方案:

    package.json

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

    now.json

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

    现在调用部署将使用带有标志的构建脚本。服务器将被配置为使用重写规则!

    【讨论】:

      猜你喜欢
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 2019-10-11
      • 2018-12-16
      • 2019-06-23
      • 2019-12-24
      相关资源
      最近更新 更多