Nginx之详解 rewrite URI重写

版权声明:guojawee https://blog.csdn.net/weixin_36750623/article/details/85047693

more conf/fastcgi.conf 相关的内置变量

rewrite功能

    使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在server{}, location{}, if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用,例如 http://seanlook.com/a/we/index.php?id=1&u=str 只对/a/we/index.php重写。

if中的条件怎么写?
 1: = 来判断相等,用于字符串比较
 2:~ 用正则来匹配(此处的正则区分大小写)
    ~* 不区分大小写
 3: -f -d -e 来判断是否为文件,为目录,是否存在

rewrite 企业应用场景

1.为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。
2.网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com

rewrite语法格式参数

语法格式   rewrite  regex  replacement  [flag];
                  正则     替代内容    flag标记
参数介绍:
 rewrite是关键字
 regex是正则表达式
 URL是要替代的内容
 [flag]是标记位的意思,它有以下几种值:
     last: 相当于Apache的[L]标记,表示完成rewrite
     break: 终止rewrite,不再继续匹配
     redirect: 返回302临时重定向,地址栏会显示跳转后的地址
     permanent: 返回301永久重定向,地址栏会显示跳转后的地址

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

if ($http_user_agent ~ MSIE) {
    rewrite ^(.*)$ /msie/$1 break;
} 
如果UA包含"MSIE",rewrite 请求到 /msid/ 目录下
break 表示 终止rewrite,不再继续匹配

猜你喜欢

转载自blog.csdn.net/weixin_36750623/article/details/85047693