lighttpd 如何解决react router的问题

一、rewrite和redirect的区别

 参考:http://blog.51cto.com/19920309/1334449

 参考:https://blog.csdn.net/caofengtao1314/article/details/81181067

redirect,即重定向。
rewrite,即重写,不仅仅可以实现redirect在url上的重定向,还可以直接重写请求道实际的文件以及更多附加功能。

重定向和URL重写的区别:

(1)关于重定向

v 通过重定向,浏览器知道页面位置发生变化,从而改变地址栏显示的地址。

v 通过重定向,搜索引擎意识到页面被移动了,从而更新搜索引擎索引,将原来失效的链接从搜索结果中移除。

v 临时重定向(R=302)和永久重定向(R=301)都是亲搜索引擎的,是SEO的重要技术。

v Redirect是浏览器和服务器发生两次请求,也就是服务器命令客户端“去访问某个页面”;

v redirect的URL需要传送到客户端。

v redirect是从一个地址跳转到另一个地址。

(2)关于重写

v rewrite的URL只是在服务器端

v Rewrite则是服务器内部的一个接管,在服务器内部告诉“某个页面请帮我处理这个用户的请求”,浏览器和服务器只发生一次交互,浏览器不知道是该页面做的响应,浏览器只是向服务器发出一个请求。

v URL重写用于将页面映射到本站另一页面,若重写到另一网络主机(域名),则按重定向处理。

v rewrite是把一个地址重写成另一个地址。地址栏不跳转。相当于给另一个地址加了一个别名一样。

上述的例子就像用户去买手机,缺货时的两种处理:让用户自己去其他地方买(Redirect);公司从其他的地方调货(Rewrite)。

二、解决react-router的方法

      1、例如网页刷新的192.168.2.1/home

       那么我们需要实现的功能就是将home这个url  rewrite到index.html中

       2、例如网页刷新的192.168.2.1/netwrok

       那么我们需要实现的功能就是将network这个url  rewrite到index.html中

      那么配置方法为

      lighttpd.conf

      $SERVER["socket"] == ":80" { 
               ssl.engine = "disable" 
               server.document-root = "/http_server/web_http"
               url.rewrite-repeat = ( "^/(home|network)$" => "/index.html" )/*表示必须以/home或者/network的url才可以执行*/
       }

      modules.conf 

      server.modules = (
            "mod_access",
           "mod_alias",
           #  "mod_auth",
           #  "mod_evasive",
           #  "mod_redirect",
           "mod_rewrite",
            #  "mod_setenv",
            #  "mod_usertrack",
        )

      

猜你喜欢

转载自blog.csdn.net/caofengtao1314/article/details/85072927