重写url段以获取参数nginx

时间:2016-11-17 15:39:19

标签: url nginx parameters url-rewriting get

我正在尝试几个小时来解决这个问题,这不应该是那么令人头痛。

我需要nginx服务器的正确代码才能完成此任务。

我有这样的网址: https://www.example.com/share/userid/file/

我想把它重写为: https://www.example.com/share/?id=userid&key=file/

我已经在stackoverflow中尝试了几个解决方案,但它们都没有工作。

我试过这个:

rewrite ^/share/(.*)/(.*)$ /share/index.php?id=$1&key=$2 ;

如果我在那里放置一个index.php文件,那就有效,但是我不能这样做因为/ share /是一个固定链接,而不是一个实际的文件夹(wordpress)。如果我这样做:

rewrite ^/share/(.*)/(.*)$ /share/?id=$1&key=$2 ;

我收到404 nginx错误。

似乎^ / share /(。)/(。)$实际上并没有触发重写,所以这一定是错的,虽然我正在查看nginx重写文档和看起来确定。

有什么想法吗?我也试过try_files但没有成功。

谢谢

更新:

好的,这样可行

rewrite ^(/share/)([0-9]+)/(.*)/$ https://$server_name/share/?id=$2&key=$3 last;

但是出于某种原因,如果我这样做,它不起作用:

rewrite ^(/share/)([0-9]+)/(.*)/$ /share/?id=$2&key=$3 last;

我不得不添加$ server_name以使其工作,任何人都可以解释为什么?

2 个答案:

答案 0 :(得分:0)

我终于自己解决了这个问题:

rewrite ^(/share/)([0-9]+)/(.*)/$ https://$server_name/share/?id=$2&key=$3 last;

我使用([0-9]+)因为第一个参数是整数

但是出于某种原因,如果我这样做,它不起作用:

rewrite ^(/share/)([0-9]+)/(.*)/$ /share/?id=$2&key=$3 last;

我必须添加

https://$server_name

此致

答案 1 :(得分:-1)

Rewrite /id/(.*)/key/(.*) ?id=$1&key=$2

https://www.example.com/share//id/userid/key/file/ 输出网址如上所示 希望这能完成这项工作