分享一个Nginx rewrite 问号问题

由于换了一套程序,需要将类型这种url Show.aspx?BookID=105161 rewrite 成 Show.php?BookID=105161,开始以为很简单,直接写成下面这种
rewrite ^/Show.aspx?BookID=([0-9]+)$ /Show.php?BookID=$1 last,结果发现不行,直接404了,经过不断尝试发现这样可以:

/Show.aspx /zhang.php?$query_string last;

网上解释的原因是:

1.nginx在进行rewrite的正则表达式中只会将url中?前面的部分拿出来匹配

2.匹配完成后,?后面的内容将自动追加到url中(包含?),如果不让后面的内容追加上去,请在最后加上?即可;

个人感觉是个bug。

posted @ 2016-12-25 21:15  371502685  阅读(739)  评论(0编辑  收藏  举报