重写url段以获取参数nginx
问题描述:
我正在尝试几个小时来解决这个问题,那应该不是那么让人头疼。重写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使其工作,任何人都可以解释我为什么?
答
Rewrite /id/(.*)/key/(.*) ?id=$1&key=$2
https://www.example.com/share//id/userid/key/file/ 输出URL将上述 希望这不会工作
答
我终于解决了这个问题我自己:
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
问候
我需要nginx的代码,我不使用Apache。 –
编辑答案 –
谢谢,但那几乎可以匹配任何东西,请检查我的更新 –