reactjs - Vite.js React 构建不会在 Netlify 和 Vercel 上重定向
问题描述
我用 vite.js 做了一个反应构建。在本地主机上构建生产和测试时一切正常。但是,当我部署到 Netlify 或我使用 react-router 创建的 vercel 路由时,无法通过直接输入其 url 访问,而只能通过使用应用程序内部的链接从主页('/')访问。
如果我单击应用程序中的路由链接,则该路由正在运行,但如果我直接输入 URL(例如:mypage/about),则会收到 404 错误。
我通过 vercel 支持签入,他们说配置中可能缺少重定向,例如默认情况下由 create-react-app 设置。在 CRA 中看起来像这样
{
"redirects: [
{ "source": "/(.*)", "destination": "/index.html" }
]
}
在浏览了 vite.js 文档后,我找不到任何关于如何在 vite 中设置重定向的提示。
解决方案
这不是 vite.js 的问题,而是由于缺少默认添加到现有模板的 vercel 配置文件。对于单页应用程序,使用 react router 创建的路由的 html 文件不存在,因此服务器上的某些内容需要创建重写以确保每个请求都指向 '/' 或 index.html。在 Vercel 中,这可以通过在名为的项目的根目录中添加对配置文件的重写来完成
vercel.json
https://vercel.com/docs/configuration 为指向“/”或“/index.html”的文件的所有路由添加重写
{
"rewrites": [{ "source": "/(.*)", "destination": "/" }]
}
或者
{
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}
推荐阅读
- macos - GCC 未检测到 MacOS Mojave 中的库路径
- ios - Swift:线程 1:EXC_BAD_ACCESS 即使有警卫
- php - PHP 生成的 HTML 的备用背景底纹的
- python - tkinter 中的 bind 和 master.bind 有什么区别?
- javascript - 使用javascript函数重定向到另一个页面
- jsf - 如何正确使用
- amazon-web-services - 我可以使用 Cloud Formation 预置我的 Elastic Beanstalk 的 EC2 实例吗?
- javascript - 防止页面上的内容在宽度页面小于 1350 像素时移动
- apache - Apache - 什么是 Dokumentroot 指令?
- laravel - 无法从用户那里获取更多项目