Как переписать в nginx URI с вопросительным знаком - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь с помощью nginx переписать URI с вопросительным знаком?Как я могу избежать вопросительного знака?

Перезапись работает, если я использую тестовый URI без "?".Но с одним я получил 404

    listen 80 default_server;
    listen [::]:80 default_server;

        root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name example.com;

    #rewrite [^\/]+\/get\.php\?username=([^\&]+)&password=([^\&]+).*$ http://$host:8080/server/get_user_videolist?username=$1:password=$2 permanent;

    rewrite ^/get.phpusername=TEST123&password=SECRET123 http://$host:8080/server/get_user_chlist?username=TEST123:password=SECRET123;

    rewrite ^/get.php?Fusername=TEST123&password=SECRET123 http://$host:8080/server/get_user_chlist?username=TEST123:password=SECRET123;

}

Мой ожидаемый вывод должен быть с первого URL на второй URL

http://example.com/get.php?username=TEST123&password=SECRET123

->

http://example.com:8080/server/get_user_chlist?username=TEST123:password=Secret123

error.log

2019/09/19 22:12:15 [error] 7059#7059: *183 open() "/var/www/html/get.php" failed (2: No such file or directory), client: *.*.*.*, server: example.com, request: "GET /get.php?username=TEST123&password=SECRET123 HTTP/1.1", host: "example.com"

1 Ответ

0 голосов
/ 20 сентября 2019

Я решил это сам http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

location / {
if ($args ~* "/?username=([a-zA-Z0-9]+)&password=([a-zA-Z0-9]+)") {
        set $username $1;
        set $password $2;
        rewrite ^ http://$host:8080/server/get_user_chlist?username=$username:password=$password? last;
    }
}
...