Удалить определенный параметр запроса из URL

У меня есть URL-адрес, например:

http://www.example.com/something?abc=one&def=two&unwanted=three

Я хочу удалить нежелательный параметр URL-адреса и сохранить остальную часть URL-адреса без изменений, и он должен выглядеть так:

http://www.example.com/something?abc=one&def=two

Этот конкретный параметр может находиться в любом месте URL-адреса по отношению к другим параметрам.

Вопрос выглядит очень простым, но я пытался много раз, но в конце концов потерпел неудачу.


person Wei Yu    schedule 08.08.2017    source источник


Ответы (1)


Вся строка запроса находится в переменной $args или в конце переменной $request_uri. Вам нужно будет создать регулярное выражение, чтобы захватить все до и после части, которую вы хотите удалить.

Например:

if ($request_uri ~ ^(/something\?.*)\bunwanted=[^&]*&?(.*)$ ) 
{
    return 301 $1$2; 
}

Дополнительные сведения см. в этом документе и это предупреждение об использовании if.

person Richard Smith    schedule 08.08.2017