nginx的重写无变化网址(nginx rewrite WITHOUT change url)

2019-07-21 06:33发布

我想使用重写功能在我的nginx服务器。

当我尝试“ http://www.example.com/1234 ”,我想改写“ http://www.example.com/v.php?id=1234 ”,并希望得到“ HTTP:// WWW .example.com的/ 1234 “在浏览器中。

这里是nginx.conf文件

...
  location ~ /[0-9]+ {
      rewrite "/([0-9]+)" http://www.example.com/v.php?id=$1 break;
  }
...

当我尝试“ http://www.example.com/1234 ”

我想要 ...

url bar in browser : http://www.example.com/1234
real url : http://www.example.com/v.php?id=1234

但我有麻烦...

url bar in browser : http://www.example.com/v.php?id=1234
real url : http://www.example.com/v.php?id=1234

Answer 1:

参考: http://wiki.nginx.org/HttpRewriteModule#rewrite

如果替换字符串以http://开头,则客户端将被重定向,任何进一步>重写指令被终止。

因此,删除HTTP://部分,它应该工作:

location ~ /[0-9]+ {
        rewrite "/([0-9]+)" /v.php?id=$1 break;
}


Answer 2:

就我而言,我需要使用“最后一次”,使其工作,由于我有,我想可以应用其他规则:

location ~ /[0-9]+ {
    rewrite "/([0-9]+)" /v.php?id=$1 last;
}


文章来源: nginx rewrite WITHOUT change url
标签: nginx rewrite