nginx地址重写

场景

1)url访问跳转,支持开发设计

2)seo优化

3)维护

后台维护、流量转发

4)安全

使用模块:rewrite

配置区域:server,location,if


正则表达式

. 匹配除换行符以为的任意字符

? 重复0次或1次

"+" 重复1次或以上

"*" 贪婪模式

"\d" 匹配数字

^ 开头标识符(^a表示以a开头)

表示以a结尾)

{n} 重复n次

{n,} 重复n次以上

[c] 匹配单个字符c

[a-z] 匹配a-z任意一个

\ 转义

() 用于匹配括号之间的内容

正则表达式测试工具:pcretest

pcretest安装参考:https://www.cnblogs.com/dingxiaoqiang/p/10860981.html

pcretest简单使用

[root@RHEL7-1 pcre-8.13]# ./pcretest 
PCRE version 8.13 2011-08-16

  re> /(\d+).(\d+).(\d+).(\d+)/
data> 124.12.1.0  
 0: 124.12.1.0
 1: 124
 2: 12
 3: 1
 4: 0
data> 

flag(标识位)

last 停止rewrite检测

break 停止rewrite检测

redirect 返回302临时重定向,地址栏会显示跳转后的地址

permanent 返回301永久重定向,地址栏会显示跳转后的地址


关于last与break的区别

server{        
      listen 80;
      server_name www.ylw.com;
      root /soft/code;
      location ~ ^/break {
          rewrite ^/break /test/ break;
          }
      location ~ ^/last {
          rewrite ^/last /test/ last;
          }
      location /test/ {
          default_type application/json;
          return 200 '{"status":"success"}'; 
          }
}

访问www.ylw.com/test/

image.png

访问www.ylw.com/break

image.png

访问www.ylw.com/last
image.png

break与last解释

当访问www.ylw.com/break时,rewrite为/test,flag为break。这时候,nginx会去/soft/code目录下寻找test目录,但是test目录不存在,这时候报404错误

当访问www.ylw.com/last时,rewrite为/test,flag为last。这时候,nginx会去重新进行location匹配

你可能感兴趣的:(nginx地址重写)