Nginx之详解 rewrite URI重写

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,不再继续匹配
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值