react-router,解析根以外的URL

时间:2018-09-15 08:51:19

标签: node.js reactjs webpack webpack-dev-server react-router-v4

我有一个create-react的{​​{1}}应用。如果我从根(即“ /”)开始,然后遵循react-router-dom中定义的链接,则效果很好。但是,如果我尝试不从根路径加载应用程序,则会显示

Link

据我了解,这应该在服务器端设置(我正在常规localhost:9000上工作)。或不?无论如何,如何实际实现呢?


注意,这与基本路径解析问题无关,此处描述:Can I set a base route in react-router


已更新

我想,应该有一种类似于使用Cannot GET /<path> 的解决方案。但是我仍然不知道如何将其应用于.htaccess。或者,也许可以在webpack.config.js中设置适当的选项?

更新2 。回购在这里:https://github.com/srgg6701/react-mini

1 个答案:

答案 0 :(得分:2)

由于所有路由均由通常位于'/'(索引)路径中的路由器处理,因此您需要回退到索引,以便路由器知道重定向的位置。可以通过在服务器端设置路径来完成此操作,但是我发现this package在这些问题上特别有用。

Webpack

如果您使用的是webpack-dev-server,则应该知道它具有以下功能(摘自官方文档):

  

将Webpack与提供实时重载的开发服务器一起使用。   这应该仅用于开发。

     

它在后台使用了webpack-dev-middleware,可提供快速的   在内存中访问Webpack资产。

     

...

     

这两种方法都将启动服务器实例并开始侦听   从本地主机通过端口8080连接。

这意味着服务器将在侦听localhost的情况下运行。您可以使用以前的方法(服务器端编码或中间件)或使用history api fallback option来解决此问题:

"scripts": {
    "start": "webpack-dev-server --history-api-fallback --config webpack.dev.config.js",
    "build": "webpack"
},

请查看webpack的官方文档,以获取有关其所有组件的更多信息。