React router React Router 1.0-100%客户端路由-页面刷新导致404错误

React router React Router 1.0-100%客户端路由-页面刷新导致404错误,react-router,React Router,我正在为一个客户创建一个网站,该网站将严格使用客户端路由脚本 这是路由器的一个示例 import React from 'react'; import { Route } from 'react-router'; import { generateRoute } from '../utils/localized-routes'; export default ( <Route component={ require('../components/APP') }> { g

我正在为一个客户创建一个网站,该网站将严格使用客户端路由脚本

这是路由器的一个示例

import React from 'react';
import { Route } from 'react-router';
import { generateRoute } from '../utils/localized-routes';

export default (
  <Route component={ require('../components/APP') }>
    { generateRoute({
      paths: ['/', 'audience'],
      component: require('../components/Audience')
    }) }
    { generateRoute({
      paths: ['speaker'],
      component: require('../components/Speaker')
    }) }
    { generateRoute({
      paths: ['board'],
      component: require('../components/Board')
    }) },
    { generateRoute({
      paths: ['questions'],
      component: require('../components/parts/AskQuestion')
    }) }
    <Route path="*" component={ require('../pages/NotFound') } />
  </Route>
);
从“React”导入React;
从“反应路由器”导入{Route};
从“../utils/localized routes”导入{generaterout};
导出默认值(
{generateRoute({
路径:['/',“受众”],
组件:需要(“../components/Audience”)
}) }
{generateRoute({
路径:['speaker'],
组件:需要(“../components/Speaker”)
}) }
{generateRoute({
路径:['board'],
组件:需要(“../components/Board”)
}) },
{generateRoute({
路径:[“问题”],
组件:需要(“../components/parts/AskQuestion”)
}) }
);
这是GeneratorOute的代码:

export function generateRoute({ paths, component }) {
  return paths.map(function(path) {
    const props = { key: path, path, component };
    // Static `onEnter` is defined on
    // component, we should pass it to route props
    if (component.onEnter) props.onEnter = component.onEnter;
    return <Route {...props} />;
  });
}
导出函数生成器文件({path,component}){
返回路径.map(函数(路径){
constprops={key:path,path,component};
//在上定义了静态“onEnter”
//组件,我们应该将其传递给路由道具
if(component.onEnter)props.onEnter=component.onEnter;
返回;
});
}
问题:

虽然我知道链接将绕过服务器导航并利用到(客户端)的转换,但在页面刷新时,我得到一个“页面找不到”

  • 如果我在浏览器的url输入(myexample.com/#speaker)前手动放置一个哈希标记,页面就会出现,但当然我不能期望用户这样做

  • 如果我必须使用散列标签来允许客户端路由,我应该把它们放在哪里?我把它们放在和/或路由器中,两者都不起作用

  • 或者,我可以实现完全的客户端路由而不使用丑陋的哈希标记吗?如果是这样,我该怎么做

  • 我更喜欢基于#3的解决方案,但如果其他方法都失败了,我会选择基于#2的解决方案

    有什么想法吗


    提前感谢。

    我只能使用上面的第2步找到解决方案,而我被标签卡住了

    import React from 'react';
    import ReactDOM from 'react-dom';
    import Router from 'react-router';
    import createHistory from 'history/lib/createHashHistory'; <-- using this
    //  import createBrowserHistory from 'history/lib/createBrowserHistory';
    
    
    const routerProps = {
      routes: require('./router/routes'),
      history: createHistory({            <--- added this to remove ugly querystring
        queryKey: false
      }),
      createElement: (component, props) => {
        return React.createElement(component, { ...props });
      }
    };
    
    ReactDOM.render(
        React.createElement(Router, { ...routerProps }),
        document.getElementById('root')
      );
    
    从“React”导入React;
    从“react dom”导入react dom;
    从“反应路由器”导入路由器;
    从“history/lib/createHashHistory”导入createHistory;