Я пытаюсь и не могу переписать следующий 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; }