我想在我的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
答案 0 :(得分:36)
参考:http://wiki.nginx.org/HttpRewriteModule#rewrite
如果替换字符串以http://开头,则客户端将被重定向,并且任何进一步的>重写指令都将被终止。
所以删除http://部分它应该可以工作:
location ~ /[0-9]+ {
rewrite "/([0-9]+)" /v.php?id=$1 break;
}
答案 1 :(得分:0)
在我的情况下,由于需要应用其他规则,因此我需要使用“ last”使其生效:
location ~ /[0-9]+ {
rewrite "/([0-9]+)" /v.php?id=$1 last;
}