解决react-router4在browserhistory路由下的nginx的白屏或者404问题

ldld 2018-02-28 原文

解决react-router4在browserhistory路由下的nginx的白屏或者404问题

  使用react-router,官方推荐用browserhistory,美观简洁。但是nginx服务器端的配置也让人头疼。

        首先看官方举例的方法:

server {
  location / {
    try_files $uri /index.html
  }
}

这个做法问题在于,你必须把你的react应用放到根路径下,且这个nginx只为这个一个应用服务。这样是不是有点浪费资源了?

假如我路径是 www.xxx.com.cn/h5/v1/getView,按照官方的nginx配置,那么就得这么写

server {
  location / {
    root /home/h5/v1;
    try_files $uri $uri/ /index.html; } 
}

 

这样配置没问题,但是你如果想再这个nginx部署其他的web应用,那么目录路径问题就让人尴尬了。

 

下面有另外一种方式:

server {
  location /h5 {
    root /home;
    try_files $uri $uri/ /h5/v1/index.html;
  }
}

 

这里的try_files配置值有3项,我们只需要关注最后一项,也就是说,在www.xxx.com.cn/h5/v1/getView访问这个请求的时候,

会到nginx服务器上,最后会查到 /home 跟 / h5/v1/index.html这个两个路径拼接后的所在的资源。

这么写了后,页面就不会报404的错误了。如果页面还是空白,说明在你react-router路由写的有问题。

问题代码如下:

1 const RouterComponents = () => (
2     <Switch>
3       <Route exact path='/' component={App} />
4       <Route path="/getView" component={getView}/>
5     </Switch>
6   )

正确的代码应该是 写完整路径,类似下面的:

1 const RouterComponents = () => (
2     <Switch>
3       <Route exact path='/' component={App} />
4       <Route path="/h5/v1/modifypassword" component={getView}/>
5     </Switch>
6   )

 

 

最后,上述代码很不美观,你可以考虑用react-router4 的basename 属性,以及ES6的模板字符串 来拼接,怎么美观怎么处理。

var react-router-prefix = '/h5/v1/';



<Router path=`${react-router-prefix}getView`/>

 

发表于 2018-02-28 15:14 道亦有盗 阅读() 评论() 编辑 收藏

 

版权声明:本文为ldld原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ldld/p/8483772.html

解决react-router4在browserhistory路由下的nginx的白屏或者404问题的更多相关文章

随机推荐

  1. hive spark版本对应关系

    查看hive source下面的pom.xml,可以找到官方默认发布的hive版本对应的spark版本,在实际 […]...

  2. QT5版本添加icon图标步骤

    QT5版本添加icon图标方法收藏     方法1:     step1:        把要显示的图标文件, […]...

  3. 08.异常处理机制

    在Java中我们可以将错误分为两种 一类是Error,在Java中用Error类表示。意味着发生了JVM检测到 […]...

  4. iOS开发技巧——关闭Autoresizing开启Autolayout

    在使用Autolayout时有时候会有莫名其妙的错误,是因为UIView是默认同时开启Autoresizing […]...

  5. 互联网协议与网络流量分析

    不管网络体系怎么划分,其每一层都完成了相应的功能,本文则从网络协议梳理延申到对网络数据流量的分析。 一、概要 […]...

  6. android与PC互传文件 adb push

    1- df 命令查看文件系统的磁盘空间占用情况 shell@android:/ # adb shell df […]...

  7. 以对话的形式管理你的Kubernetes集群

    BotKube BotKube 是一个用于监控和调试 Kubernetes 集群的消息传递工具。 BotKub […]...

  8. 学习深度学习–逻辑斯特回归

    学习深度学习–逻辑斯特回归 逻辑斯特回归虽然名字叫做回归,但是他却是解决的分类问题,他的原理在线性 […]...

展开目录

目录导航