reactjs - 部署后 React BrowserRouter 路由不起作用
问题描述
我有一个简单的网站,并且有 2 个链接可以脱机工作,但是如果我将其部署并上传到网站上,那么第一页工作正常,但是当我单击添加链接时,它给了我 404 和列表链接工作正常并且两个链接在离线时都可以正常工作
<a href="/react/">List</a>
<a href="/react/Add">Add</a>
路由器文件
ReactDOM.render(
<BrowserRouter>
<Route path="/react/" exact component={List}/>
<Route path="/react/Add" exact component={Add}/>
</BrowserRouter>,
document.getElementById('root')
);
包.json
{
"name": "axios1",
"version": "0.1.0",
"homepage":"http://aroratour.com/react/",
解决方案
由于您已将项目部署在名为react
. 您需要添加basename
到您的路径中BrowserRouter
并需要/react
从Route's
路径中删除,
<BrowserRouter basename="/react">
<Switch> // Switch return the first matching Route
<Route path="/" exact component={List}/>
<Route path="/Add" exact component={Add}/>
</Switch>
</BrowserRouter>
注意:确保添加.htaccess
文件。
如果您Link
的项目中有任何内容,则不应包含/react
在路径中。
例如,要导航到/Add
using Link
,您应该有,
<Link to="/Add"> Add </Link>
这将在内部转换为,
<a href="/react/Add"> Add </a> //React will automatically add `/react` from basename in BrowserRouter
更新
这个.htaccess
内容对我有用,
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|gif|ico|jpg|js|png|swf|txt|svg|woff|ttf|eot)$
RewriteRule . index.html [L]
推荐阅读
- javascript - 表单上的按钮控件来操作 Web Browser 控件网页
- android - 在 aosp 构建中找不到资源错误
- c# - 我的 SQL Server 数据库 asp.net 核心中的数据库初始化程序始终为空数据
- vbscript - 如何在 .net core 或 .net 标准项目中运行 VBScript?
- php - 在代码点火器的 foreach 循环中从表单批量插入
- r - 用闪亮的R在R中创建交互式传单地图
- gcov - GCOV:执行多次测试时未生成 GCDA 文件
- r - 多项式和交互项的岭回归与 glmnet
- ms-access - MS Access 运行时 - 文件对话框失败
- angular - Angular 2子路由不起作用