我正在尝试几个小时来解决这个问题,这不应该是那么令人头痛。
我需要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以使其工作,任何人都可以解释为什么?
答案 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/ 输出网址如上所示 希望这能完成这项工作