React-Router:将我的 url 从 hashHistory 重定向到 browserHistory

Posted

技术标签:

【中文标题】React-Router:将我的 url 从 hashHistory 重定向到 browserHistory【英文标题】:React-Router: Redirect my url from hashHistory to browserHistory 【发布时间】:2017-09-01 17:45:09 【问题描述】:

我最近对我的代码进行了更改,以便在我的 React-Router 中使用 browserHistory 而不是 hashHistory。虽然我工作的网站的一些用户可能已经用哈希标记了 URL。

旧网址看起来像www.mywebsite.com/#/page?query=param,我想确保如果有人将其添加为书签,它会被重定向到www.mywebsite.com/page?query=param

看起来.htaccess 无法进行此重定向,所以我想知道最干净的方法是什么?

谢谢。

【问题讨论】:

如果用户点击仍然包含哈希的 url,他们会到达该网站吗? 链接不再有哈希。我只关心指向该站点的书签或外部链接。他们访问的网站是,但不是正确的页面。 【参考方案1】:

在你的主要组件中,你可能会渲染this.props.children,你可以通过调用this.props.location.pathname来访问当前的url,如果url包含一个哈希,你可以剥离它并将用户重定向到他们的url想去。

这仅在用户第一次从其他任何地方返回您的网站时才有效,但如果他们已经在您的网站上并使用书签转到网站上的其他地方,我认为这不会奏效。原因是主组件的 componentDidMount 仅在初始加载或实际页面刷新时触发。

希望这会有所帮助。

【讨论】:

以上是关于React-Router:将我的 url 从 hashHistory 重定向到 browserHistory的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 react-router 链接会将我带到页面中间?

如何从通配符路由重定向到主页?

从 URL 中删除 '%20' - React-Router

带有 react-router 的 React.js:我的组件是不是应该对 url 的更改做出“反应”,反之亦然?

将 url id 从 react-router 传递给 mongoose

react-router 如何从数组生成路由?