我正在尝试使用 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; }