如何实现Nginx去除重复的URL关键字?

Nginx

1 前言

一个问题,一篇文章,一出故事。
笔者生产环境的反向代理(Nginx)一个URL(链接)中反复多次出现同一个关键字的需要去除的情况,范例如下,

https://www.cmdschool.org/wwwroot/combo/?browserId=chrome&minifierType=&languageId=en_US&t=1658882587986
&/wwwroot/o/frontend-js-aui-web/aui/yui-throttle/yui-throttle-min.js
&/wwwroot/o/frontend-js-aui-web/aui/classnamemanager/classnamemanager-min.js
&/wwwroot/o/frontend-js-aui-web/aui/aui-classnamemanager/aui-classnamemanager-min.js
&/wwwroot/o/frontend-js-aui-web/aui/aui-debounce/aui-debounce-min.js
&/wwwroot/o/frontend-js-aui-web/aui/array-extras/array-extras-min.js
&/wwwroot/o/frontend-js-aui-web/aui/event-base/event-base-min.js
&/wwwroot/o/frontend-js-aui-web/aui/dom-core/dom-core-min.js
&/wwwroot/o/frontend-js-aui-web/aui/dom-base/dom-base-min.js
&/wwwroot/o/frontend-js-aui-web/aui/selector-native/selector-native-min.js
&/wwwroot/o/frontend-js-aui-web/aui/selector/selector-min.js
&/wwwroot/o/frontend-js-aui-web/aui/node-core/node-core-min.js
&/wwwroot/o/frontend-js-aui-web/aui/dom-style/dom-style-min.js
&/wwwroot/o/frontend-js-aui-web/aui/node-base/node-base-min.js
&/wwwroot/o/frontend-js-aui-web/aui/event-delegate/event-delegate-min.js

需要注意的是,
– 以上代码是一行,换行是容易理解。
– 以上重复的关键字是“/wwwroot”
以上,笔者经过反复调试终于解决此问题,于是成文记录。

2 最佳实践

2.1 加入代码

vim /etc/nginx/conf.d/www.cmdschool.org.conf

加入如下代码,

server {
    #...
    if ($request_uri ~ ^/wwwroot(.*)$) { return 301 https://www.cmdschool.org$1; }
    if ($request_uri ~ ^(.*)/wwwroot(.*)$) { return 301 https://www.cmdschool.org$1$2; }
    #...
}

2.2 重载使服务生效

systemctl reload nginx.service

参阅文档
==================
https://serverfault.com/questions/980989/nginx-remove-duplicate-parameter-in-url

没有评论

发表评论

Nginx
如何解决Nginx代理传大文件不同步问题?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境遇到用户透过反向代理上传大文件提示用户已经完成 …

Nginx
如何实现Nginx根据路径分配代理?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境遇到需要根据URI路径选择走哪个代理服务器的案 …

Nginx
如何实现Nginx返回字符串或变量值?

1 前言 一个问题,一篇文章,一出故事。 笔者测试环境中经常需要返回Nginx变量的具体值,于是整理 …