美文网首页
Nginx配置rewrite重定向跳转

Nginx配置rewrite重定向跳转

作者: YangEvol | 来源:发表于2020-11-18 17:22 被阅读0次

    1.功能:使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。

    2.位置:rewrite只能放在server{},location{},if{}中。

    3.作用域:只能对域名后边的除去传递的参数外的字符串起作用,例如 http://baidu.com/a/we/index.php?id=1&u=str,只对/a/we/index.php重写

    4.如果相对域名或参数字符串起作用,可以使用全局变量匹配,也可以使用proxy_pass反向代理。

    5.执行顺序是:
    <1> 执行server块的rewrite指令
    <2.> 执行location匹配
    <3. >执行选定的location中的rewrite指令
    如果其中某步URI被重写,则重新循环执行1-3,直到找到真实存在的文件;循环超过10次,则返回500 Internal Server Error错误。

    6.语法rewrite regex replacement [flag];

    7.flag标志位
    last : 相当于Apache的[L]标记,表示完成rewrite
    break : 停止执行当前虚拟主机的后续rewrite指令集
    redirect : 返回302临时重定向,地址栏会显示跳转后的地址
    permanent : 返回301永久重定向,地址栏会显示跳转后的地址

    因为301和302不能简单的只返回状态码,还必须有重定向的URL,这就是return指令无法返回301,302的原因了。这里 last 和 break 区别有点难以理解

    8.last一般写在server和if中,而break一般使用在location中,
    last不终止重写后的url匹配,即新的url会再从server走一遍匹配流程,而break终止重写后的匹配,
    break和last都能组织继续执行后面的rewrite指令

    9 常用正则
    . : 匹配除换行符以外的任意字符
    ? : 重复0次或1次

    • : 重复1次或更多次
    • : 重复0次或更多次
      \d :匹配数字
      ^ : 匹配字符串的开始
      : 匹配字符串的介绍 {n} : 重复n次 {n,} : 重复n次或更多次 [c] : 匹配单个字符c [a-z] : 匹配a-z小写字母的任意一个 小括号()之间匹配的内容,可以在后面通过1来引用,$2表示的是前面第二个()里的内容。正则里面容易让人困惑的是\转义特殊字符。

    10 例子:

    server {
            listen       80 ;
            server_name  gtest.tow.cn;
    
            # Load configuration files for the default server block.
            # include /etc/nginx/default.d/*.conf;
    
             location / {
                    rewrite ^/(.*)  https://shop.tow.cn/#/login?redirect=%2FhomePage&acoform=yibao break;
            }
    }
    
    

    相关文章

      网友评论

          本文标题:Nginx配置rewrite重定向跳转

          本文链接:https://www.haomeiwen.com/subject/ypvciktx.html