rewrite 功能
一, 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 功能的更多相关文章
- charles本地调试之map和rewrite功能
charles是一款mac下代理调试工具,对于前端开发同学来说是相当方便的一个调试接口的工具:不过charles需要收费,不过在天朝几乎收费的软件都能找到破解方法: 使用charles前,需要将cha ...
- nginx服务器的rewrite功能
nginx编译的时候默认是把rewrite功能编辑进去的,但是因为rewrite需要使用正则表达式,因此需要安装pcre依赖包. yum install -y pcre pcre-install re ...
- ASP.NET Core中怎么实现Url rewrite功能
我们可以使用ASP.NET Core的中间件来实现Url rewrite功能,下面我们定义一个中间件ReplaceQueryStringMiddleware来替换Http请求中的Url参数即Query ...
- Ubuntu上开启Apache Rewrite功能的方法
Ubuntu上开启Apache Rewrite功能的方法 本文介绍ubuntn系统中开启apache的urlrewrite功能的方法. 在Windows上开启Apache的urlRewrite非常简单 ...
- 如何开启Apache Rewrite功能
一.Ubuntu默认未开启Rewrite支持 apche模块加载工作已分散到不同的配置文件,这样看起来似乎更为合理,管理起来也非常方便.下面看一下如何开启Rewrite模块,当用户需使用301重定向. ...
- Charles抓包 mock数据和rewrite功能
一.mock数据 mock:在后端返回异常或需要=改前端展示的数据时可以模拟返回的response 1.1 抓到接口后 右击保存response到本地,后缀改成.json打开可以看到是把json保存下 ...
- Ubuntu下启动Apache的Rewrite功能
在终端中执行 sudo a2enmod rewrite 指令后,即启用了 Mod_rewrite 模块. 另外,也可以通过将 /etc/apache2/mods-available/rewrite.l ...
- CentOS下Apache开启Rewrite功能
1.centos的配置文件放在: /etc/httpd/conf/httpd.conf 打开文件找到: LoadModule rewrite_module modules/mod_rewrite.so ...
- 如何在Ubuntu下启动Apache的Rewrite功能
在终端中执行 sudo a2enmod rewrite 指令后,即启用了 Mod_rewrite 模块. 另外,也可以通过将 /etc/apache2/mods-available/rewrite.l ...
- .htaccess FollowSymlinks影响rewrite功能
Thinkphp的框架的根目录的.htaccess是这样写的: <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine ...
随机推荐
- Oracle 定时任务讲解
前几天,公司的job调度出现了问题,由于权限管的严,没有查看oracle 一些重要的数据字典,后面联系DBA,是由于数据库切换到备机时,参数设置不对,导致db job没有正常调度. 今天刚好有时间,想 ...
- Go语言最佳实践——通道和并发
何时关闭通道: 第一,只有在后面要检查通道是否关闭的时候才需要显式地关闭通道: 第二,应该由发送端的goroutine关闭通道,而不是由接收端的goroutine来完成: 第三,如果通道并不需要检查是 ...
- SQL SERVER2008 R2修改Server Collation--文檔沒細看先存下來.
HOW TO: RESTORE THE MASTER DATABASE IN SQL SERVER 2012 by Thomas LaRock | Jan 14, 2014 | MSSQL, SQL ...
- 让Fireball CodeEditor控件禁止中文双倍输入
第一次使用这个控件的时候,输入注释时候, 中文都是双倍输入,很是郁闷,查到资料,在 让Fireball CodeEditor控件支持中文 这篇文章中使用的方法,将代码复制过来发现不适用, 后来再一次偶 ...
- c# 读取txt文档和写入文档的方法
StreamReader sr = new StreamReader(path); //path是要读取的文件的完整路径 String str_read = sr.ReadToEnd(); //从开始 ...
- 「HEOI2016/TJOI2016」序列
题目链接 戳这 Solution 首先考虑最暴力的dp 我们设: \(f[i]\)表示选择\(i\)以后所能形成的满足条件的子序列的最大值 \(minx[i]\)表示\(i\)能转换为的最小值 \(m ...
- c++多线程基础5(future,async,packaged_task,promise)
以下内容整理自:https://www.cnblogs.com/my_life/articles/5401190.html future 是一个能从其他地方获取到一个值的对象,如果是在不同的线程中,则 ...
- kill 进程的一些小细节
终止前台进程,可以用Ctrl+C组合键.但对于后台进程需要用kill命令. kill PID 还可以加信号(参数),默认情况下是编号为15的信号.term信号将终止所有不能捕捉该信号的进程. -s 可 ...
- python基础之内置函数(一)
内建函数都在 _builtins_ 里面 (1)abs() 取绝对值 adb(-10) 10 (2)bool()将参数转换成布尔型,返回值是True或False 参数是数字时,0返回False,其他任 ...
- php tp5常用小知识
1. tp5 获取当前访问的模块名,控制器名,方法名 $request= \think\Request::instance(); $module = $request->module(); // ...