【问题标题】:Vercel Rewrite: SPA Fallback except for API endpointVercel 重写:SPA 后备,API 端点除外
【发布时间】:2020-11-19 21:23:10
【问题描述】:

我有一个要部署到 Vercel 的单页应用程序 + API。

我目前正在尝试在我的 vercel.json 中添加一些配置:

  1. 重定向不在根目录的调用(例如/login) to index.html`,以便我可以利用 HTML History API(即 react-router 的浏览器路由器)
  2. 不要期待/api 端点,我有一些动态路径(例如/files/[fileId]/[checksum].ts

如何在 Vercel 中创建一个重写来完成这个?

我听从了这里的建议:https://vercel.com/docs/configuration#routes/advanced/spa-fallback

{
  "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}

但是,这确实会将具有动态路径的 API 端点重定向到 index.html 文件,我只是希望这是 API。

有什么想法吗?

【问题讨论】:

    标签: vercel


    【解决方案1】:

    您可以使用negative lookahead regex 来检查网址是否包含api

    /(?!api\/.*).*/
    
    {
      "rewrites": [
        {
          "source": "/((?!api\/.*).*)",
          "destination": "/index.html"
        }
      ]
    }
    

    【讨论】:

    • 如果您使用自定义根目录文件夹(如“src”?)如何创建此路由?谢谢
    • 抱歉,我无法理解您的问题。你问如果后端在自定义目录上怎么办,对吗?
    • 所以,我的 api 文件夹位于“./src/api”下。由于我的无服务器 fn 在“./src”下,我将 vercel 项目 rood 目录定义为“./src”。万一,我不清楚我应该如何创建重写路线:-7
    猜你喜欢
    • 2019-06-15
    • 2021-02-06
    • 2014-10-08
    • 2022-09-28
    • 2019-12-14
    • 2018-07-15
    • 2021-06-03
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多