<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="使用htaccess配置解决 react-router中history配置createBrowserHistory浏览器刷新页面404的问题" id="card1">
<p> 游客</p><p>
标题:使用htaccess配置解决 react-router中history配置createBrowserHistory浏览器刷新页面404的问题<br/>
正文:<br/>
摘要: 使用react-router ，发布到服务器后，子路径下浏览器刷新，页面报not find 404问题解决的方案。首先我们先找到问题，再解决问题，别嫌我啰嗦，首先说说react路由history三种模式。history 配置React Router 是建立在 history 之上的。 简而言之，一个 history 知道如何去监听浏览器地址栏的变化， 并解析这个 URL 转化为 location 对象， 然后 router 使用它匹配到路由，最后正确地渲染对应的组件。<br/>常用的 history 有三种形式， 但是你也可以使用 React Router 实现自定义的 history。createHashHistorycreateBrowserHistorycreateMemoryHistory这三个有什么区别呢：createHashHistory这是一个你会获取到的默认 history ，如果你不指定某个 history 。它用到的是 URL 中的 hash（#）部分去创建形如http://mtui.mtsee.com/#/help 的路由。<br/>这个 支持 ie8＋ 的浏览器，但是因为是 hash 值，所以不推荐使用。createBrowserHistoryBrowser history 是由 React Router 创建浏览器应用推荐的 history。它使用 History API 在浏览器中被创建用于处理 URL，新建一个像这样真实的 URL http://mtui.mtsee.com/help。Memoryhistory不会在地址栏被操作或读取。那么问题来了~<br/>使用reateHashHistory，因为这里用的#hash 方式，真正的url没变。变的只是hash值，所以我们下次直接访问http://mtui.mtsee.com/#/help 这个地址就能直接访问，但是这种模式不利于SEO，不推荐使用。使用createBrowserHistory的时候，因为是使用 History API处理url的，真实的url已经改变，当我们重新刷新浏览器，内部已经重置，我们下次再访问地址http://mtui.mtsee.com/help 的时候，之前的history已经更新，相当于直接到服务器去请求这个<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2269&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2269&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2269&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=2269&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=2269">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=2269">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>