React Router可以在本地机器,Chrome上工作,但不能在Safari和其他浏览器上工作,
<Switch>
<Route exact path={"/"} component={Home} />
<Route path="/programs/:slug" component={Programs} />
<Route path="/page/:slug" component={Page} />
<Route component={NotFound} />
</Switch>
字符串
这是我的代码,但它在开发模式下完美地工作,没有错误,但在生产,safari给404错误,当我导航到程序/:slug或页面/:slug
5条答案
按热度按时间5m1hhzi41#
我把它添加到.htaccess
字符串
感谢Kishan Mundha的解释
gcuhipw92#
您可能需要在服务器上配置单个入口点
index.html
。所有URL都应该指向index.html
,入口点将根据路由决定如何渲染和内容。p4rjhz4m3#
如果您使用的是
pm2 serve
,则只需添加--spa
标志即可。xxb16uws4#
我把它添加到./public_html/.htaccess文件中
字符串
解决方案:如何修复"404" error when directly accessing a component in react
mbyulnm05#
这是因为你的网站是一个基于React的SPA(单页应用程序)。
当你通过root /访问网站时,它会自动加载index.html,这是你的应用程序,然后当你访问其他页面时,你实际上永远不会离开index.html页面
因此它加载额外的数据并模拟浏览器页面更改。
然而,当你提出一个新的请求,例如直接进入其中一个子页面或点击刷新,而在他们的Web服务器被要求提供该文件.但该文件实际上并不存在.因此,404错误。
解决这个问题的方法是通过重定向,你需要在部署文件夹中有一个_redirects文件,其中包含
运行命令生成项目时。
npm run build
然后简单地创建一个新的file _redirect并粘贴这一行
/*/index. html 200
然后重新部署项目,它将正常工作。