reactjs - 如何使用 Zeit.co 将动态 url 加载为静态的 nextjs 应用程序?
问题描述
我有一个 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,该 api 将在将其显示给用户之前获取实际的配方信息。
如果用户从应用程序中导航,它可以正常工作,我可以正确传递参数并且一切正常。
但是,如果我得到 url 并将其直接粘贴到 url 上,我会得到 404 而不是食谱。
在本地运行它工作正常,但是当我将它部署到 Zeit 时,我遇到了这个问题。我需要在那里配置什么吗?它是使用我在本地应用程序上设置的 server.js 还是使用其他东西?
解决方案
问题是 url 使服务器搜索文件夹配方并搜索您通过urlId
.
有两种方法可以做到这一点。
1)所以你必须告诉服务器不要查找文件夹,只需将任何 url 的 url 重定向到 index.html 页面
或者
2)可以使用hash策略让url有#location path
在此处检查其他解决方案Router not working。
或者您可以添加服务器端更改的 htaccess 文件可能是不可能的
推荐阅读
- django - 如何用漂亮的汤解析脚本?
- kong - 无法在 Kong 中启用会话插件(即使升级到最新版本)
- react-native - 在本机反应中找不到堆栈导航器中的键的路由
- node.js - Mongoose 在验证器中访问“this”是未定义的
- perl - Perl S3 使用 Net::Amazon::S3 分段上传
- java - 使用 CGLib 动态创建 POJO/bean 并设置值
- node.js - 在 Express 服务器上部署 Gatsby 静态资产
- r - 尝试编写一个从两个样本中模拟单个 t 统计量的函数
- gradle - 执行generateJsonModel任务时如何强制gradle显示cmake服务器json响应
- sql-server - 基于其他列值的重复行