`
wdhdmx
  • 浏览: 300413 次
  • 性别: Icon_minigender_1
  • 来自: 山西
博客专栏
D4bbb5f7-9aa4-3e66-8194-f61b3f0241c2
天天编程
浏览量:21526
社区版块
存档分类
最新评论

nginx学习笔记(二)rewrite学习

 
阅读更多

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/ ;
  }
}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics