nginx 剔除請求參數 $args 變量中任意指定參數之萬金油


剔除任意指定參數配置

只需要修改需要剔除的參數key(如:redirectUrl)

#剔除$args中的redirectUrl 參數
server {
    listen   80;
    server_name  www.mynginx.rewrite;

    location /search {
     #在參數前加入&,並賦值給args_tmp
set $args_tmp &${args};
     #正則判斷進行剔除
if ( $args_tmp ~* ^(.*)(&redirectUrl=[\w%@\.]*)(.*)$){ set $args $1$3; }
     #除去參數開頭可能帶有&字符的情況
if ( $args ~* ^&(.*)$){ set $args $1; }
     #最終的$args為剔除
redirectUrl參數后的$args
     rewrite ^/search http://www.text.com/text?$args? break;
 }
}

測試項:

http://www.mynginx.rewrite/search?redirectUrl=abc.@&abcd=1234&token=xxxxx
http://www.mynginx.rewrite/search?token=xxxxx&redirectUrl=abc.@&abcd=1234
http://www.mynginx.rewrite/search?token=xxxxx&abcd=1234&redirectUrl=abc.@

測試結果分別是:

http://www.text.com/text?abcd=1234&token=xxxxx
http://www.text.com/text?token=xxxxx&abcd=1234
http://www.text.com/text?token=xxxxx&abcd=1234

某一參數轉為訪問路徑

將$args 參數數組中的某一參數轉為訪問目錄,並在$args 中剔除(原理如上)

server {
    listen   80;
    server_name  www.mynginx.rewrite;

    location /search {
        set $args_tmp &${args};
        if ( $args_tmp ~* ^(.*)(&redirectUrl=\w*)(.*)$){                                                                                    
       set $arg_path $arg_redirectUrl; #獲取參數變量redirectUrl的值 set $args $1$3; rewrite ^/search /text/$arg_path; } } location ~* /text { if ( $args ~* ^&(.*)$){#除去參數開頭可能帶有&字符的情況 set $args $1; } rewrite ^/text/(.*) http://www.text.com/text/$1?$args? break; } }

測試項:

http://www.mynginx.rewrite/search?redirectUrl=abc&abcd=1234&token=xxxxx
http://www.mynginx.rewrite/search?token=xxxxx&redirectUrl=abc&abcd=1234
http://www.mynginx.rewrite/search?token=xxxxx&abcd=1234&redirectUrl=abc

測試結果分別是:

http://www.text.com/text/abc?abcd=1234&token=xxxxx
http://www.text.com/text/abc?token=xxxxx&abcd=1234
http://www.text.com/text/abc?token=xxxxx&abcd=1234

注:測試前請在C:\Windows\System32\drivers\etc\hosts中配置DNS,有疑問請在評論區留言。

 

知識雖不屬於個人,但請尊重每位筆者。

轉載請指明出處:https://www.cnblogs.com/dennyLee2025/p/13742497.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM