反应路由器哈希历史记录

时间:2017-08-27 06:56:16

标签: reactjs

我正在研究hashHistory vs browserHistory并坚持“哈希历史不需要任何服务器端配置”这一点。我不明白这一点,请让我知道。

1 个答案:

答案 0 :(得分:3)

当您设置react-router以使用'哈希历史'时......

 <Router history={hashHistory}>

...它在您的网址末尾添加了这些奇怪的#字符串(哈希字符串)。路由器使用字符串中包含的信息为请求的特定页面呈现正确的组件。

如果您不希望散列字符串出现在URL的末尾,则可以设置react-router来创建看起来像example.com/some/path的真实URL。内部react-router将确保呈现该路由的正确组件。

只有一个问题。现在,如果有人访问example.com/some/path,您的服务器将尝试在您的网站目录中找到该页面,而不是将请求交给您的反应路由器。您的服务器不知道如何处理URL。

您必须将服务器配置为始终提供您的应用程序,无论哪个URL进入。然后您的应用程序将在浏览器中操作URL以返回正确的页面。这就是为什么当你想使用

时,你还需要在服务器上进行一些配置
 <Router history={browserHistory}>

更好看的网址

Here is some info关于浏览器历史记录(好看的网址)和哈希历史记录(网址中的#符号)之间的差异

您不会编写正在使用的服务器。有一些服务器配置示例(nginx,apache)in the documentation.