nginx 剔除 $args 变量中任意指定参数之万金油

摘要:
token=xxxxx&abcd=1234某一参数转为访问路径将$args参数数组中的某一参数转为访问目录,并在$args中剔除server{listen80;server_namewww.mynginx.rewrite;location/search{set$args_tmp&${args};if{set$arg_path$arg_redirectUrl;#获取参数变量redirectUrl的值set$args$1$3;rewrite^/search/text/$arg_path;}}location~*/text{if{#除去参数开头可能带有&字符的情况set$args$1;}rewrite^/text/(.*)http://www.text.com/text/$1?token=xxxxx&abcd=1234注:测试前请在C:WindowsSystem32driversetchosts中配置DNS,有疑问请在评论区留言。知识虽不属于个人,但请尊重每位笔者。

剔除任意指定参数配置

只需要修改需要剔除的参数key(如:redirectUrl)

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

    location /search {
        set $args_tmp &${args};
        if ( $args_tmp ~* ^(.*)(&redirectUrl=[w%@.]*)(.*)$){
            set $args $1$3;
        }
#除去参数开头可能带有&字符的情况
if ( $args ~* ^&(.*)$){ set $args $1; } 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:WindowsSystem32driversetchosts中配置DNS,有疑问请在评论区留言。

知识虽不属于个人,但请尊重每位笔者。

转载请指明出处:https://www.cnblogs.com/dennyLee2025/p/13742497.html

免责声明:文章转载自《nginx 剔除 $args 变量中任意指定参数之万金油》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇获得执行jar的运行路径腾讯PerfDog(性能狗)初体验下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Nginx跨域及Https配置

一、跨域 1. 什么是跨域? 跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制(指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的) 例如:a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域...

nginx(1)安装

./configure --prefix=/usr/local/nginx 安装及设置安装路径 安装遇见的问题 1. ./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --with...

nginx启动、停止重启

安装: https://qizhanming.com/blog/2018/08/06/how-to-install-nginx-on-centos-7 启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /usr/l...

基于 Git Tag 发布及回滚代码

基于 Jenkins + Git + Ansible 发布 PHP 项目 1、部署 PHP 运行环境 PHP 是一个动态程序,负责解析 PHP-FPM 服务,而这个服务不支持静态网页处理,一般结合 Nginx 解决这个问题。Nginx 本身是一个静态 Web 服务器,并不支持解析 PHP 程序,但它支持了 FastCGI 接口来调用动态服务来解析 PHP...

centos lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress 安装phpmyadmin 定时备份mysql两种方法 第二十五节课

centos  lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress  安装phpmyadmin  定时备份mysql两种方法  第二十五节课 wordpress下载地址:https://cn.wordpress.org/ 架构:nginx代理 +LAMP 修改Windows的hosts文件 ap...

nginx 开启x-forward

192.168.137.2 node1:/etc/nginx#cat /etc/nginx/nginx.conf worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;...