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

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

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

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

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

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

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

 二, PCRE规则

  

字符

描述

\

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

^

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

$

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

*

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

+

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

?

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

?

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

{n}

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

{n,}

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

{n,m}

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

.

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

(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

匹配x或y。

[xyz]

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

[^xyz]

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

[a-z]

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

[^a-z]

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

\b

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

\B

匹配非单词边界。

\cx

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

\d

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

\D

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

\f

匹配一个换页符。等价于\x0c和\cL

\n

匹配一个换行符。等价于\x0a和\cJ

\r

匹配一个回车符。等价于\x0d和\cM

\s

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

\S

匹配任何非空白符。

\t

匹配一个制表符

\w

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

\W

匹配任何非单词字符。

\xn

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

\num

匹配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

  

rewrite 功能的更多相关文章

  1. charles本地调试之map和rewrite功能

    charles是一款mac下代理调试工具,对于前端开发同学来说是相当方便的一个调试接口的工具:不过charles需要收费,不过在天朝几乎收费的软件都能找到破解方法: 使用charles前,需要将cha ...

  2. nginx服务器的rewrite功能

    nginx编译的时候默认是把rewrite功能编辑进去的,但是因为rewrite需要使用正则表达式,因此需要安装pcre依赖包. yum install -y pcre pcre-install re ...

  3. ASP.NET Core中怎么实现Url rewrite功能

    我们可以使用ASP.NET Core的中间件来实现Url rewrite功能,下面我们定义一个中间件ReplaceQueryStringMiddleware来替换Http请求中的Url参数即Query ...

  4. Ubuntu上开启Apache Rewrite功能的方法

    Ubuntu上开启Apache Rewrite功能的方法 本文介绍ubuntn系统中开启apache的urlrewrite功能的方法. 在Windows上开启Apache的urlRewrite非常简单 ...

  5. 如何开启Apache Rewrite功能

    一.Ubuntu默认未开启Rewrite支持 apche模块加载工作已分散到不同的配置文件,这样看起来似乎更为合理,管理起来也非常方便.下面看一下如何开启Rewrite模块,当用户需使用301重定向. ...

  6. Charles抓包 mock数据和rewrite功能

    一.mock数据 mock:在后端返回异常或需要=改前端展示的数据时可以模拟返回的response 1.1 抓到接口后 右击保存response到本地,后缀改成.json打开可以看到是把json保存下 ...

  7. Ubuntu下启动Apache的Rewrite功能

    在终端中执行 sudo a2enmod rewrite 指令后,即启用了 Mod_rewrite 模块. 另外,也可以通过将 /etc/apache2/mods-available/rewrite.l ...

  8. CentOS下Apache开启Rewrite功能

    1.centos的配置文件放在: /etc/httpd/conf/httpd.conf 打开文件找到: LoadModule rewrite_module modules/mod_rewrite.so ...

  9. 如何在Ubuntu下启动Apache的Rewrite功能

    在终端中执行 sudo a2enmod rewrite 指令后,即启用了 Mod_rewrite 模块. 另外,也可以通过将 /etc/apache2/mods-available/rewrite.l ...

  10. .htaccess FollowSymlinks影响rewrite功能

    Thinkphp的框架的根目录的.htaccess是这样写的: <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine ...

随机推荐

  1. madvise、fadvise、posix_madvise和posix_fadvise函数的使用

    系统调用madvise的作用:建议内核如何使用指定段的内存.函数原型如下: #include <sys/mman.h> int madvise(void *addr, size_t len ...

  2. 编写高质量代码改善C#程序的157个建议——建议14: 正确实现浅拷贝和深拷贝

    建议14: 正确实现浅拷贝和深拷贝 为对象创建副本的技术称为拷贝(也叫克隆).我们将拷贝分为浅拷贝和深拷贝. 浅拷贝 将对象中的所有字段复制到新的对象(副本)中.其中,值类型字段的值被复制到副本中后, ...

  3. 301 MovedPermanently 重定向

    页面永久性移走(301重定向)是一种非常重要的“自动转向”技术. 301重定向可促进搜索引擎优化效果 从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法.当网站的域名发生变更后,搜索引 ...

  4. 【转】ANDROID自定义视图——onLayout源码 流程 思路详解

    转载(http://blog.csdn.net/a396901990) 简介: 在自定义view的时候,其实很简单,只需要知道3步骤: 1.测量——onMeasure():决定View的大小 2.布局 ...

  5. duilib入门简明教程 -- 自绘标题栏(5)

       如果大家有做过标题栏的自绘,肯定会感慨各种不容易,并且现有的一些资料虽然完美的实现了功能,但是代码比较乱,需要自行整理.如果用duilib,就是小case啦.     duilib其实并没有区分 ...

  6. C# 筛选string 类型里面的汉字,获取首字母字母,正则表达式Regex 常用验证

    界面效果 1.提取汉字 private void buttonX1_Click(object sender, EventArgs e) { if (TxtYuan.Text.Trim() != &qu ...

  7. angular 基本依赖注入

    import { Injectable } from '@angular/core'; @Injectable() export class ProductServiceService { const ...

  8. angular 引入第三方库

    第一步 --save:自动写入package.json 第二步: 第三部: 为了让typescript识别$ 第四步:

  9. Ubuntu 安装后的配置及美化(一)

    Ubuntu 安装后的配置及美化(一) 记录一下 完成后的主界面. 配置 1.更新源为阿里云 找到 软件和更新 选项,更新源为阿里云的源. 在 其他软件 中将 Canonical合作伙伴 打上勾. 然 ...

  10. js自定义对象 (转)

    原文地址:https://sjolzy.cn/js-custom-object.html 29 March 2010 9:53 Monday by 小屋 javascript进阶之对象篇 一,概述 在 ...