我要把 http://www.abc.com/a/b?id=123 的一条链接转换成 http://www.abc.com/p-123.html
想当然就以为问号还是按照普通字符用正则表达式转义来处理,类似 b\?id= 这样,谁知道根本不起作用。
后来在谷歌帮助下才发现原来问号在nginx中是有特殊逻辑的,它用$query_string来表示问号以后的字符,即"id=123"
这样就好办了,换个方式就ok了。
最后是这样写的:
if ($request_uri ~* "^/a/b\?id=(\d+)$") {
set $myarg1 $1;
rewrite .* http://www.abc.com/p-$myarg1.html? permanent;
}
注意,set $myarg1 $1; 这句话不能少,不能直接用$1,会出错的。