nginx笔记二

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请求不同的转发

Java代码   收藏代码
  1. server{  
  2.     listen      8011;  
  3.     server_name gg.xxx.com 127.0.0.1;  
  4.     #匹配带有这些字符的URL请求  
  5.     location ~ /gg/client/client_gg.php {  
  6.             #转发到go.do,参数会自动附加  
  7.             rewrite ^(.*)$ http://gg.xxx.com:81/go.do last;  
  8.   }  
  9.     #下面的是广告,跳转到www主站  
  10.     location ~ /gg/gg_go\.php {  
  11.             #直接跳转www主站,不会附加参数  
  12.             return  http://www.xxx.com/ ;  
  13.   }  
  14. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值