nginx带参301,nginx重定向携带路由,nginx截取请求url作为重定向路由

目标功能

将下面的链接:

https://www.domain.com/abcdef/defghi.html

重定向到:

https://www.domain.com/abc/defghi.html

即砍掉中间的def。
在此基础上要做一个批量重定向的效果,一条表达式完成不同尾部路由的重定向。

已知功能

在之前写过的文章“nginx301重定向优雅实现”中有利用nginx内置rewrite功能配合 if() + 正则 实现判断某条件路由后重定向到新的地址,例如:
if ($request_uri ~* ^(.*)abcdef(.*)$){rewrite (.*) https://www.domain.com/abc/defghi.html? permanent;}
可以匹配https://www.domain.com/abcdef/defghi.html,跳转到https://www.domain.com/abc/defghi.html

如果个位数的页面需要重定向可以一条一条的写后缀,那么有没有统一匹配后重定向到原来的路由呢,这就需要截取url作为临时变量,当做参数重定向了。

截取url作为后置参数

精华部分在这里了
请求

https://www.domain.com/abcdef/defghl.html
https://www.domain.com/abcdef/efghij.html
https://www.domain.com/abcdef/afwef.html
https://www.domain.com/abcdef/fghfh.html

重定向

if ($request_uri ~* ^(.*)abcdef(.*)$){
set $my_uri $2;
rewrite (.*) https://www.domain.com/abc/$my_uri? permanent;}

效果

https://www.domain.com/abc/defghl.html
https://www.domain.com/abc/efghij.html
https://www.domain.com/abc/afwef.html
https://www.domain.com/abc/fghfh.html

一条配置实现一种格式的批量重定向,带后缀自动截断作为参数传递进301地址。
创作不易,如果对你有帮助,受累点个赞吧~感谢

你可能感兴趣的:(nginx,服务器)