nginx的rewrite不支持{} ??? 哈哈 开玩笑

最近老大给一个任务让了解nginx rewrite的写法,用正则解决 将所有的诸如
http://xx.aaa.cn/yyzz/nn.html rewirete 为
http://www.aaa.cn/?domain=xx&page=yy&id=nn&size=zz

于是开始看nginx的rewrite各种规则开始写出如下代码

if ($host ~* http:\/\/(.*)\.aaa\.cn) {
set $subName $1;
rewrite ^/([a-zA-Z]{2}})([a-zA-Z]{2})\/([a-zA-Z]{2})\.html    ?domain=$subName&page=$1&id=$3&size=$2 last;
}
但是无论怎么调试均不能正常rewrite,上网查资料也没发现有价值的东西,就在开始怀疑人生的 时候,想到可以使用如下代码替换,那么问题解决。

if ($host ~* ^(xx).aaa.cn) {
    set $subName $1;
    rewrite ^/([ a-zA-Z])\1([a-z A-Z])\2/([a-z A-Z])\3.html$   http://www.aaa.cn/?domain=$subName&page=$1$1&id=$3$3&size=$2$2 last;

}

最终还是没了解为何就不支持{}。是nginx版本问题? 换了其他人的机子上测试依然不行。郁闷闷闷闷。。。。


时隔两天,今天无意中发现nginx的rewrite为何不支持{}  ,原来正则表达式需要加上"",

修改如下:

if ($host ~* ^(xx).aaa.cn) { 
    set $subName $1; 
    rewrite "^/([ a-zA-Z]{2})([a-zA-Z]{2})/([a-zA-Z]{2}).html$"   http://www.aaa.cn/?domain=$subName&page=$1&id=$3&size=$2 last; 

}

测试,成功。哈哈

转载于:https://my.oschina.net/qqwang/blog/178486

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值