如何使用Zeit.co for nextjs应用程序将动态URL加载为静态?

时间:2020-04-12 07:01:42

标签: reactjs next.js vercel

我有一个nextjs应用程序,在我的server.js上有此应用程序:

 server.get('/recipes/:urlId', (req, res) => {
      const actualPage = '/recipe'
      const queryParams = { urlId: req.params.urlId }
      app.render(req, res, actualPage, queryParams)
    })

因此,基本上,每当我尝试到达/ recipes / {something}时,它都会使用queryParams呈现页面。 以后将使用它来调用一个api,在将其显示给用户之前,它将获取实际的食谱信息。

如果用户从应用程序中导航,则可以正常工作,我可以正确地传递参数,并且一切正常。

但是,如果我获得该网址并将其直接粘贴到该网址上,则会得到404而不是配方。

在本地运行可以正常工作,但是当我将其部署到Zeit时遇到了这个问题。 我需要在此处进行配置吗?它使用我在本地应用程序上设置的server.js还是使用其他内容?

1 个答案:

答案 0 :(得分:0)

问题在于网址使服务器搜索文件夹配方并搜索已通过urlId的文件夹。

有两种方法可以做到这一点。

1)因此,您必须告诉服务器不要查找文件夹,只需将任何URL的URL重定向到index.html页

2)您可以使用哈希策略使网址具有#个位置路径

Router not working处查看其他解决方案。

或者您可以为服务器端更改添加htaccess文件