原因解析:
之所以你在浏览器内可以由首页跳转到其他路由地址,是因为这是由前端自行渲染的,你在React Router定义了对应的路由,脚本并没有刷新网页访问后台,是JS动态更改了location。
当你刷新时,你首先是访问的后台地址,然后返回的页面内加载了React代码,最后在浏览器内执行;也就是说如果这个时候报404,是因为你后台并没有针对这个路由给出返回HTML内容,也谈不上执行React Router了。
1、apache配置:在项目目录放置.htaccess
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.html?s=$1 [QSA,PT,L]
</IfModule>
红色部分是关键
2、ngnix配置,再service添加
location / {
root /usr/local/sixpre/;
index index.html index.htm;
try_files $uri $uri/ @router;
}
#重点是这个地方配置,具体原理我也不知道,希望知道的大神赐教
location @router {
rewrite ^.*$ /index.html last;
}