2016-11-17 103 views
0

我正在尝试几个小时来解决这个问题,那应该不是那么让人头疼。重写url段以获取参数nginx

我需要一个正确的代码为nginx服务器来实现这一点。

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

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

我已经在这里计算器几种解决方案尝试过,但他们都没有工作。

我已经试过这样:

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

这工作,如果我把一个index.php文件存在,但我不能这样做,原因/股/是一个固定链接,而不是一个实际的文件夹(WordPress的)。如果我这样做:

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

我得到一个404 nginx错误。

它似乎也是^/share /(。)/(。)$实际上并没有触发重写,所以这一定是错误的,虽然我在看nginx重写文档并且看起来没问题。

任何想法?我也尝试try_files没有成功。

谢谢

UPDATE:

OK所以此工程

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使其工作,任何人都可以解释我为什么?

回答

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

https://www.example.com/share//id/userid/key/file/ 输出URL将上述 希望这不会工作

+0

我需要nginx的代码,我不使用Apache。 –

+0

编辑答案 –

+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 

问候