Перенаправление Nginx для определенного URL-адреса

Перенаправление Nginx для определенного URL-адреса

Для серверного блока нашего сайта в nginx у меня есть следующие директивы местоположения:

location ~* ^.+\.(ico|css|js|eot|woff|otf|svg|gif|jpe?g|png|swg|woff2)(\?[a-z0-9=_]+)?$

location /applications/

location /

location ~ \.php$

У меня есть определенный URL из нашего старого программного обеспечения форума, который я хочу перенаправить. URL выглядит так:

https://www.example.com/forums/forumdisplay.php?f=105

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

location = /forums/forumdisplay.php?f=105 {
    return 301 https://newurl;
}

Это не работает - я все еще получаю 404 с этого URL. Где/как мне сделать это перенаправление?

решение1

Один из подходов заключается в использовании:

location = /forums/forumdisplay.php {
    if ($arg_f = 105) {
        return 301 https://newurl;
    }
    fastcgi_pass /path/to/php.sock; # Send the request to PHP processor
}

При таком подходе будет найден /forums/forumdisplay.phpURL-адрес, в котором fаргумент запроса имеет значение 105, и могут быть дополнительные аргументы запроса.

Пример в комментарии требует точного соответствия полному URL-адресу и не работает, если URL-адрес окажется

http://example.com/forums/forumdisplay.php?f=105&fbclid=4567

Связанный контент