一、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",
)