zoukankan      html  css  js  c++  java
  • rewrite 功能

    一, rewrite 地址重写与地址转发

      区别: 1,地址转发后客户端浏览器地址栏中的地址时不会改变的;而地址重写的话客户端浏览器地址栏会改变为服务器确定的地址

         2, 在一次地址转发过程中,只产生一次网络请求;而一次地址重写一般会产生两次请求

         3, 地址转发一般发生在同一站点项目内,而地址重写没有限制

         4, 地址转发到页面可以i不用全路径表示, 而地址重写到页面必须使用完整的路径名表示

          5, 地址转发过程中,可以将客户端的请求requstest 范围内的属性床底给新的页面,但是地址重写不可以

         6,地址转发的速度比地址重定向快

     二, PCRE规则

      

    字符

    描述

    将下一个字符标记为一个特殊字符,或一个原义字符,或一个向后引用,或一个八进制转义符。例如,” ”匹配一个换行符。

    ^

    匹配输入字符串的开始位置。

    $

    匹配输入字符串的结束位置。

    *

    匹配前面的子表达式零次或多次,等价于{0,}

    +

    匹配前面的子表达式一次或多次,等价于{1,}

    ?

    匹配前面的子表达式零次或一次,等价于{0,1}

    ?

    当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少地匹配所搜索的字符串,而默认的贪婪模式则尽可能多地匹配所搜索的字符串。例如,对于字符串”oooo”,”o+?”将匹配单个”o”,而”o+”将匹配所有的”o”。

    {n}

    N是一个非负整数,匹配确定的n次。

    {n,}

    N是一个非负整数,至少匹配n次。

    {n,m}

    Mn均为非负整数,其中n<=m,最少匹配n次且最多匹配m次。

    .

    匹配除” ”之外的任何单个字符。要匹配包括” ”在内的任何字符,请使用像”[. ]”的模式

    (pattern)

    匹配pattern并获取这一匹配。

    (?:pattern)

    匹配pattern但不获取匹配结果。这在使用“或”字符(|)来组合一个模式的各个部分是很有用的。例如:’industry|industries’就可以用’industr(?:y|ies)’代替

    (?=pattern)

    正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。例如:”Windows(?=95|98|NT|2000)”能匹配”Windows2000”中的”Windows”,但不能匹配”Windows3.1”中的”Windows”。

    (?!pattern)

    负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串。例如:”Windows(?!95|98|NT|2000)”能匹配”Windows3.1”中的”Windows”,但不能匹配”Windows2000”中的”Windows”。

    x|y

    匹配xy

    [xyz]

    字符集合,匹配所包含的任何一个字符。

    [^xyz]

    负值字符集合,匹配未包含的任意字符。

    [a-z]

    字符范围,匹配指定范围内的任意字符。

    [^a-z]

    负值字符范围,匹配任何不在指定范围内的任意字符。

    

    匹配一个单词边界,也就是单词和空格间的位置。

    B

    匹配非单词边界。

    cx

    匹配由x指明的控制字符。X的值必须为A-Za-z之间

    d

    匹配一个数字字符。等价于[0-9]

    D

    匹配一个非数字字符。等价于[^0-9]

    f

    匹配一个换页符。等价于x0ccL

    匹配一个换行符。等价于x0acJ

    匹配一个回车符。等价于x0dcM

    s

    匹配任何空白字符,包括空格、制表符、换页符等。

    S

    匹配任何非空白符。

    匹配一个制表符

    w

    匹配包括下划线的任何单词字符。等价于[a-zA-Z0-9_]

    W

    匹配任何非单词字符。

    xn

    匹配n,其中n为十六进制转义值。例如”x41”匹配”A”。

    um

    匹配num,其中num是一个正整数。对所获取的匹配的引用。例如:”(.)1”

    三, return指令

      主要用于完成对请求的处理,直接向客户端返回相应的代码

      在server模块中使用, 语法结构如下

      return [ text ]

      return code URL;

      return URL;

         : code   为返回客户端的http状态代码. 可以返回0~999 之内的

         text    未返回给客户端的相应体内容,支持变量的使用

         URL  为返回给客户端URL地址

    四, rewrite 指令

      这个是改变uri, 可以同时存在一个或者多个指令,在按照顺序一次对url进行匹配处理

      url与uri的区别

      URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。格式为:Scheme:[//][用户名[:密码]@]主机名[:端口号]][/资源路径]

      而URL是uniform resource locator,统一资源定位器,格式:Scheme://主机名[:端口号][/资源路径]

      它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。而URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java-net@java.sun.com。也就是说,URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI 

     rewrite语法格式

      rewrite regex replacement [flag];

             regex  这个是用于匹配正则, 使用括号() 标记要截取的内容

        replacement 匹配 成功后用于替换uri中截取内容的字符串

        flag 用来设置rewrite对URI的处理行为:   

           redirect:302跳转到rewrtie后面的地址。

           permanent:301永久调整到rewrtie后面的地址,即当前地址已经永久迁移到新地址,一般是为了对搜索引擎友好。

           last:将rewrite后的地址重新在server标签执行。

           break:将rewrite后地址重新在当前的location标签执行。

    rewrite_log no | off  指令

      配置是否开启重写日志

    set 指令

      set variable value

      variable 变量名称要用$作为第一个字符 变量不能与Nnginx服务的全局变量同名 

      value  为变量的值

    uninitialized_variable_warn 指令

      配置使用未初始化变量时,是否记录警告日志

      uninitialized_variable_warn on | off 默认开启

    五, rewrite全局变量

      

     l六 防盗链:

      valid_referers

      

  • 相关阅读:
    PHP pcntl
    Linux 远程登录命令telnet
    git .gitignore不生效
    使用 GoLand 启动 运行 Go 项目
    Go语言: 万物皆异步
    MYSQL 单表一对多查询,将多条记录合并成一条记录
    详解PHP中instanceof关键字及instanceof关键字有什么作用
    all_user_func()详解
    python的反射
    python 的魔术方法
  • 原文地址:https://www.cnblogs.com/kingle-study/p/9603690.html
Copyright © 2011-2022 走看看