nginx rewrite 重写规则


1
注意点:在重写的时候,一定要注意,if 和后面的括号是要有一个空格的

if ($host ~ .*\.com ){
        rewrite ^/de/(.*)$ http://www.onfancy.de/$1 permanent;
        rewrite ^/fr/(.*)$ http://www.onfancy.fr/$1 permanent;
        rewrite ^/it/(.*)$ http://www.onfancy.it/$1 permanent;
        rewrite ^/es/(.*)$ http://www.onfancy.es/$1 permanent;
        
    }


2.在重写的时候,需要使用正则表达式
$host 代表域名,首先判断域名,
来看这个正则:
rewrite ^/de/(.*)$ http://www.onfancy.de/$1 permanent


代表域名下面的  .com/de/这个路径下面的,重写为http://www.onfancy.de/
其中$1代表前面括号中匹配的字符也就是说字符 ^/de/(.*)$ 中的(.*) 就是后面的$1,如果还有括号,依次为$2,$3

最后一个字符可以用下面的:
rewrite指令的最后一项参数为flag标记,支持flag标记有:
1.last     相当于apache里面的[L]标记,表示rewrite。
2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。
3.redirect  返回302临时重定向,浏览器地址会显示跳转后的URL地址。
4.permanent  返回301永久重定向, 浏览器地址会显示跳转后的URL地址。
使用last和break实现URI重写,浏览器地址栏不变。而且两者有细微差别,使用alias指令必须用last标记;使用proxy_pass指令时,需要使用break标记。Last标记在本条rewrite规则执行完毕后,会对其所在server{......}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配。
 
一般在跟location中(location /{...})或直接在server标签中编写rewrite规则,推荐使用last标记;在非根location中(location /cms/{...}),则使用break。
如果URI中含有参数(/app/test.php?id=5),默认情况下参数会被自动附加到替换串上,你可以通过在替换串的末尾加上?标记来解决这一问题。
例如:rewrite ^/test(.*)$ http://www.tiyee.net/home  permanent;
访问http://www.tiyee.net/test?id=5 会跳转到 http://www.tiyee.net/home?id=5 


参考文章:

http://nginx.org/cn/docs/http/converting_rewrite_rules.html

http://www.cnblogs.com/cgli/archive/2011/05/16/2047920.html

http://bbs.aliyun.com/read/137857.html

http://zhan.renren.com/itbegin?gid=3602888498031453983&checked=true

http://lihuipeng.blog.51cto.com/3064864/671614


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值