NGINX - URL 参数重写

NGINX - URL 参数重写

我正在尝试使用 nginx 重写以下 URL,但失败了:

https://mywebsite/myservice/pages/service/service.html?URL=/eServiceCNX/eservice.dll

https://mywebsite/myservice/pages/service/service.html?URL=/eService/eservice.dll

基本上,我想从“URL=”参数中删除“CNX”部分。

我怎样才能做到这一点 ?

谢谢。

答案1

有几种解决方案,它们都使用if而不是 ,rewrite因为后者不能对参数字符串进行操作。

如果这是唯一需要重定向的 URI,最简单的解决方案是:

if ($request_uri = /myservice/pages/service/service.html?URL=/eServiceCNX/eservice.dll ) 
{ 
    return 301 /myservice/pages/service/service.html?URL=/eService/eservice.dll; 
}

$request_uri变量包含原始请求,包括参数。请参阅这种警告关于 的使用if


越来越多的通用解决方案利用正则表达式来捕获 URI 的部分内容,并在没有“CNX”文本的情况下重建它。但这实际上取决于您的要求。

例如,要使用包含“CNX”的参数列表修改任何 URI:

if ($args ~ ^(.*)CNX(.*)$ ) { return 301 $uri?$1$2; }

相关内容