nginx的rewrite规则中,如果包含大括号,则需要将此条规则中的匹配项用引号包含起来,否则会出现错误。
如:
rewrite ^/([a-zA-Z]{1,50})/api/([a-zA-Z]{1,50})$ /api/api.php?a=$1&t=$2;
如上面这条规则,用nginx -t测试规则是否成功时会出现以下错误:
[emerg]: directive “rewrite” is not terminated by “;”
正确的应该是这样的
rewrite "^/([a-zA-Z]{1,50})/api/([a-zA-Z]{1,50})$" /api/api.php?a=$1&t=$2;
用引号将包含大括号的规则包含起来,就不会出错了。