rewrite是通过正则表达式来改变uri的功能,如何重定向和选择配置文件,是由变量决定的
如果这个指令在server层级,那么它将在请求的location被确定之前就被执行。如果在那个location中,也设定了rewrite指令,那么指令仍旧会执行。如果location内部的rewrite指令执行后,uri改变了,那么新的uri的location会被重新计算,这个循环执行10次,nginx就会返回错误500.
首先要说一下主要的几个正则表达式
\ |
将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 |
^ |
匹配输入字符串的开始位置。 |
$ |
匹配输入字符串的结束位置。 |
* |
匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。 |
+ |
匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 |
? |
匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 |
. |
匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。 |
作用:
1.一些动态的URL伪装成静态html,便于搜索引擎抓取。
2.一些旧的链接要进行更新兼容。
指令:
if rewrite set return break;
标识:
last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302 ,浏览器会显示跳转后的URL地址
permanent – 返回永久重定向的HTTP状态301 ,浏览器会显示跳转后的URL地址
实例:
将旧的php请求不同的转发
server{
listen 8011;
server_name gg.xxx.com 127.0.0.1;
#匹配带有这些字符的URL请求
location ~ /gg/client/client_gg.php {
#转发到go.do,参数会自动附加
rewrite ^(.*)$ http://gg.xxx.com:81/go.do last;
}
#下面的是广告,跳转到www主站
location ~ /gg/gg_go\.php {
#直接跳转www主站,不会附加参数
return http://www.xxx.com/ ;
}
}
分享到:
相关推荐
nginx学习笔记.zip
Nginx学习笔记
nginx脚本引擎 rewrite设计原理
nginx学习笔记.docx
这是我自学nginx的学习笔记,上传只是为了更好的督促自己学习,如果你也有同感,加入一起学习吧。
5Nginx学习笔记1
Nginx教程
资源nginx 学习笔记实用知识库分享知识分享
nginx脚本引擎与rewrite设计原理(一)
nginx笔记nginx笔记nginx笔记nginx笔记nginx笔记nginx笔记nginx笔记nginx笔记
nginx脚本引擎与rewrite设计原理(三)
Nginx学习笔记
Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写[文].pdf
安装 和使用安装常用命令配置文件nginx.conf配置文件三部分组成:全局块,event块,http块全局块:从配置文件开始到events块之间的内容,主要设
Nginx第二天学习笔记
Nginx的Rewrite规则与实例
里面有关于nginx所有的配置具体的介绍,其中有nginx怎样配置负载均衡,图片服务器,资源压缩,黑白名单限制,websocket反向代理,rewrite重写规则,服务器缓存设置,ssl证书配置,keepalive部署nginx集群,openResty...
nginx配置location总结及rewrite规则写法
本文是关于 nginx rewrite常用示例。