由于換了一套程序,需要將類型這種url Show.aspx?BookID=105161 rewrite 成 Show.php?BookID=105161,開始以為很簡單,直接寫成下面這種
rewrite ^/Show.aspx?BookID=([0-9]+)$ /Show.php?BookID=$1 last,結(jié)果發(fā)現(xiàn)不行,直接404了,經(jīng)過不斷嘗試發(fā)現(xiàn)這樣可以:
/Show.aspx /zhang.php?$query_string last;
網(wǎng)上解釋的原因是:
1.nginx在進(jìn)行rewrite的正則表達(dá)式中只會將url中?前面的部分拿出來匹配
2.匹配完成后,?后面的內(nèi)容將自動追加到url中(包含?),如果不讓后面的內(nèi)容追加上去,請在最后加上?即可;
個人感覺是個bug。