Назад | Перейти на главную страницу

NGINX - перезапись аргумента URL

Я пытаюсь и не могу переписать следующий URL с помощью nginx:

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

к

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

В основном я пытаюсь удалить часть «CNX» из аргумента «URL =».

Как я могу это сделать ?

Спасибо.

Есть несколько решений, и все они используют 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». Но это действительно зависит от ваших требований.

Например, чтобы изменить любой URI со списком аргументов, содержащим "CNX":

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