构建并部署我的前端应用程序后,我在尝试直接访问子路径时遇到 404 错误。然而,访问主域(
example.in
)工作正常。例如,尝试直接访问 example.in/login
会导致 404 错误,但删除 /login
并首先访问 example.in
,然后通过应用程序导航到 login
,可以按预期工作。
example.in/certificate/1/
这样的子路径会导致404错误。example.in
) 并逐步导航到证书页面 (example.in/certificate/2/
) 工作正常。访问子路径似乎会直接导致 404 错误,而浏览应用程序却按预期工作。这种行为令人困惑,我不确定根本原因。
我正在寻求有关识别和解决导致直接访问子路径出现 404 错误的问题的指导。任何见解或建议将不胜感激。谢谢!
我希望解决上述问题后,直接访问子路径时收到404错误的问题将得到解决。具体来说,我预计:
/login
或/certificate/1/
等子路径将成功加载相应页面,而不会遇到404错误。部署ReactJS前端应用后,直接访问子路径时遇到404错误。但是,访问主域工作正常。例如,尝试直接访问
example.in/login
会导致 404 错误,但从主域导航到 /login
可以按预期工作。
直接访问像
example.in/certificate/1/
这样的子路径会导致404错误。
访问主域 (example.in
) 并逐步导航到证书页面 (example.in/certificate/2/
) 工作正常。
尝试使用 Vercel 和 AWS CloudFront 部署应用程序,遇到类似的 404 错误。
将
vercel.json
文件添加到项目根目录,其中包含以下内容:
{
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}
此配置确保所有请求都定向到
index.html
,从而允许React Router正确处理路由。
400
作为 HTTP 错误代码。10
。/index.html
。HTTP 响应代码选择
200: OK
。此配置可确保 CloudFront 针对所有 404 错误返回
index.html
,从而允许 React Router 正确处理路由。
应用上述解决方案后:
/login
或/certificate/1/
等子路径应该加载相应的页面而不会出现404错误。按照提供的步骤操作,您应该能够解决在 Vercel 或 AWS CloudFront 上部署的 ReactJS 应用程序中直接访问子路径时收到 404 错误的问题。如果您有更好的解决方案请告诉我们。