nginx中rewrite的使用方法
admin
2023-02-21 22:20:04
0

1.开启rewrite日志

rewrite_log on; #http 段加入

error_log logs/xxxerror.log notice; #在将错误日志级别调低

2.跳转域名

 location / {
         rewrite / https://www.baidu.com;
        }

#表示,只要访问这个域名直接跳转到 baidu
nginx中rewrite的使用方法
#查看日志能看到记录用"/"访问了"111.com",跳转到了"baidu"
修改下代码

location /rewrite/ {
         rewrite / https://www.baidu.com;
        }

#表示只有用域名后面跟着"/rewrite/",文件夹才会跳转(只有/rewrite/才会触发跳转,其他文件夹正常转发)
如下图
nginx中rewrite的使用方法
#我这边用"www.111.com/rewrite/123.com" 访问才跳转了

3.使用正则跳转

例子1,
www.111.com/111/index.html 跳转到 www.111.com/222/index.html

location / {
         rewrite ^/111/(.*)$  /222/$1 ;
        }

#"^"表示根的意思,就表示 www.111.com 的的意思,(.*) 匹配所有的意思,后面"$1"调用,
nginx中rewrite的使用方法
#日志,能就看出/111/index.html 跳转到 /222/index.html

4.rewrite指令

last    终止在本location块中处理接收到的URI,并将此处重写的URI作为新的URI使用其他location进行处理,(转到第1个location 匹配)
break   将此处重写的URI作为一个新的URI在当前location中继续执行,并不会将新的URI转向其他location。(继续从当前的location 继续往下匹配)
redirect    将重写后的URI返回个客户端,状态码是302,表明临时重定向,主要用在replacement字符串不以“http://”,“ https://”或“ $scheme” 开头;
permanent   将重写的URI返回客户端,状态码为301,指明是永久重定向;
那么什么是永久性跳转,什么是临时跳转,这有什么作用呢?下面我们举例说明:

如果有一个url,/a。
如果配置成
rewrite "/a" "http://test.html" redirect;
则说明这个跳转是一个临时跳转,此时如果有网络爬虫爬这个链接时,是不会更新自己的url数据库的。
但是如果配置成permanet,则爬虫会更新自己的url数据库,把/a更新为http://test.html。
这也就是临时跳转和永久跳转的区别。
break和last区别测试
        location /222/ {
        rewrite ^/222/(.*) /333/$1;
}
        location / {
       rewrite ^/111/(.*) /222/$1 break;

}

#上面配置,最后url会输出到"222"文件夹里,如果把break 换成了last的话,url里的111会被替换成222 从第一个location继续匹配,这样最终输出url是"333"

#

5.if 判断加调用变量跳转

nginx中rewrite的使用方法
nginx中rewrite的使用方法
实例1

 if ($server_port = 80) {
            rewrite ^(.*)$ https://$host$1 permanent;
           }

#在http段配置,表示如果访问者是以80端口访问的,就执行跳转。匹配根后面的url,重写成https://"访问的域名"+"匹配的url"

实例2

   if ( !-f $request_filename ){
   rewrite (.*) http://$host/bucunzai.html;
}

#在location 段配置,"! -f $request_filename" 表示,检测url请求本地是否有问题,如果页面文件不存在,就转发给 "buzunzai.html".

实例3 www.111.com/jpg-aaa-bbb-ccc.html => www.111.com/jpg/aaa/bbb/ccc/jpg_ccc.html

        location / {
        rewrite ^/(.*)-(.*)-(.*)-(.*).html$ /$1/$2/$3/$4/$1_$4.html  ;
}

实例4 补全www

        if ($host = "111.com"){
        rewrite ^(.*)$ http://www.111.com$1 last;
}

#写在http段,"$host" 变量就是 url里的域名假如以 "111.com/123.html" 访问就是
"111.com",假如以 "www.111.com/233.html" 就是"www.111.com"

相关内容

热门资讯

产能被冻、损失五百亿,阿联酋“... 阿联酋正式退出欧佩克,令这个成立了60多年、对全球油价都有着决定性影响的海湾核心组织公开决裂。欧佩克...
煤气灶火焰调什么颜色才最佳 良好的燃烧器,火焰呈浅蓝色,火力旺盛,火苗高度大小均匀一致。煤气灶火焰调节方式:1、将灶阀开到最大。...
柏特燃气灶中间没火怎么办 当我们使用柏特燃气灶时,出现中间没有火的情况可能是由多种原因引起的。以下是一些常见的原因和解决方法:...
火王燃气灶右边灶头打不着火 1、没有燃气。打不着火的情况大部分都是没有气了或者天然气管道堵塞所导致的,或者突发情况导致燃气公司关...
厨房橱柜开太快导致炉子熄火怎么... 1、使用燃气灶时,不要将燃气灶的门关的过紧导致气流不流通,从而间接导致炉子熄火的现象频发。2、在橱柜...
天然气火没关,把阀门关了 天然气火没关,把阀门关了如果只是一次这样做,不会造成安全问题,但最好将燃气灶具开关关闭,如果灶具使用...
金建希案主审法官坠亡,揭开韩国... ·申宗旿(中)在主持庭审。(韩联社)这一事件无疑已成为观察韩国司法独立现状的重要切片。作者:刘 潇当...
赖清德“偷渡式”窜访斯威士兰,... 台湾地区领导人赖清德此前因有关国家拒绝发放包机飞行许可,窜访斯威士兰受挫。5月2日,赖清德偷偷钻进斯...
28.5亿元建的高标准农田,“... 设备未安装、泵房被废弃、水渠不通水、农田灌溉难……鄱阳县部分高标准农田建设的问题正凸显出来。据澎湃新...
风声丨3万元即可入刑,史上最严... 作者丨胡敏洁浙江大学光华法学院教授、法律与社会政策研究中心主任长期以来,医药购销领域的腐败问题,始终...