网站首页linux

Nginx rewrite重定向, 显式跳转与隐式跳转

发布时间:2020-12-16 14:08:52编辑:slayer.hover阅读(200)

    将url地址

        http://web.com/goods/159684.html

    重定向到

        http://web.com/goods/view?id=159684

    1.显式跳转,直接使用permanent或redirect

    location ~* ^/goods/[\d]+ {
        rewrite ^/goods/([\d]+) http://web.com/goods/view?id=$1 last;
    }

    location ~* ^/goods/[\d]+ {
        rewrite ^/goods/([\d]+) http://web.com/goods/view?id=$1 break;
    }

    location ~* ^/goods/[\d]+ {
        rewrite ^/goods/([\d]+) /goods/view?id=$1 redirect;
    }

    location ~* ^/goods/[\d]+ {
        rewrite ^/goods/([\d]+) /goods/view?id=$1 permanent;
    }

    上面四条任选其一即可,效果一样,会发现当前地址栏url已经发生改变。


    2.隐式跳转

    location ~* ^/goods/[\d]+ {
        rewrite ^/goods/([\d]+) /goods/view?id=$1 break;
        proxy_pass http://web.com;
    }

    地址栏url没有变化,页面已是新的地址返回内容,这里实际上使用的是一个proxy_pass反向代理。

    注:使用proxy_pass指令时,需要使用break标记;



    ------------------------------------rewrite之flag参数------------------------------------


    last:本条规则匹配完成后,本location{}里后续rewrite/return规则不执行,但重写后的url再次从头开始执行所有规则。

    break:本条规则匹配完成后终止,本location{}与其他location{}的所有rewrite/return规则都不再执行。

    redirect:返回302临时重定向

    rewrite /(.*) http://web.com/$1 redirect;

    等同于:

    return 302  http://web.com$request_uri;


    permanent:返回301永久重定向

    rewrite /(.*) http://web.com/$1 permanent;

    等同于:

    return 301  http://web.com$request_uri;


    return语句一般用于对请求的客户端直接返回响应状态码、字符串或者url链接。

    注:return后面的url必须是以http://或者https://开头。


评论