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,上网查资料也没发现有价值的东西,就在开始怀疑人生的 时候,想到可以使用如下代码替换,那么问题解决。
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;
}
测试,成功。哈哈