【问题标题】:How to redirect NGINX to if如何将 NGINX 重定向到 if
【发布时间】:2022-01-11 07:43:10
【问题描述】:

我正在尝试使用 nginx 进行重定向,如果它返回 /?SSO=1,它会重定向到 https://support.com.br/?SSO=1,但如果它返回 /?SSO=0,则 url 会转到 https://support.com.br/ 我的代码是这样的

map $arg_SSO $ssorewrite {
    0  /;
    1  /?SSO=1;
}
server {
    listen 8080;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    rewrite ^/$ /?SSO=1 permanent;
    port_in_redirect off;

    if ($arg_SSO) {
        rewrite ^/$ $ssorewrite last;
    }
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SERVER_NAME $host;    
    }
    location ~ /\.ht {
        deny  all;
    }
    location ~ php-errors\.log$ {
        deny all;
    }
}

但是,它从这个重定向:https://support.com.br/ 为:https://support.com.br/?SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1&SSO=1

想法是从https://support.com.br/ 重定向到https://support.com.br/?SSO=1,如果它返回 ?SSO=0 或其他值,则将其重定向到 url https://support .com.br/ 我该如何解决?

【问题讨论】:

    标签: php nginx redirect url-rewriting


    【解决方案1】:

    试试这个地图构造:

    map $arg_SSO $ssorewrite {
        0  /;
        1  /?SSO=1;
    }
    

    也在虚拟主机配置中:

    server {
    ...
        if ($arg_SSO) {
            rewrite ^/$ $ssorewrite last;
        }
    ...
    }
    
    猜你喜欢
    • 2018-09-21
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2015-10-19
    • 2017-09-24
    • 2011-04-23
    • 2016-04-05
    相关资源
    最近更新 更多