Nginx-Rewrite重新路由语法

勿以浮沙筑高台


Rewrite重新路由

基本语法:

rewrite [正则表达式 替换前的URL] [替换后的URL] [标识];

作用范围: server域/location域/if判断里

正则表达式

符号解释
.匹配换行符()以外的字符
重复0次或多次
+重复1次或多次
*最少链接数,那台服务器链接数少就分发那一台
\d匹配数字
^匹配字符串的开始
$匹配字符串的结尾
{n}重复n次或多次
{n}重复n次或多次
[c]匹配单个字符c
[a-z]匹配a-z小写字母中任意一个
\转义字符.(index.html)
()匹配括号之间的内容,用$1,$2…调用

flag:

符号解释
redirect302跳转到rewrtie后面的地址。
permanent301永久调整到rewrtie后面的地址,即当前地址已经永久迁移到新地址,一般是为了对搜索引擎友好。
last将rewrite后的地址重新在server标签执行。
break将rewrite后地址重新在当前的location标签执行

break/last

server {
    listen 80;
    server_name www.mrfu.com;
    location ~ ^/break {
    	## 这个是访问的实际路径地址,及当前nginx下文件路径
        rewrite ^/break /test break;
    }
    
    location ~ ^/last {
        ## last 再次访问内部地址路由/test下
        rewrite ^/last /test last;
    }
    
    location /test {
        default_type application/json;
        return 200 '{"status":"success"}';
    }
}

① 访问 http://www.mrfu.com/test/ 返回 {“status”:“success”}

② 访问 http://www.mrfu.com/break 返回 404

③ 访问 http://www.mrfu.com/last 返回 {“status”:“success”}

redirect / permanent

server {
    listen 80;
    server_name www.mrfu.com;
    location ~ ^/break {
        rewrite ^/break /test break;
    }
    
    location ~ ^/redirect {
         # rewrite ^/last /test last;
       rewrite ^/last /test redirect;
    }
​
    location ~ ^/permanent{
        rewrite ^/forbiden https://www.baidu.com permanent;
         # rewrite ^/forbiden https://www.baidu.com redirect;
    }
    
    location /test {
        default_type application/json;
        return 200 '{"status":"success"}';
    }
}

① 访问 http://www.mrfu.com/redirect 先返回302,地址重定后返回200
① 访问 http://www.mrfu.com/permanent 先返回301,永久重定向返回200,除非重启nginx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值