Nginx Redirect для определенного 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. Где / как мне сделать это перенаправление?

0
задан 8 December 2020 в 16:38
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
}

Этот подход будет соответствовать URL /forums/forumdisplay.php, где запрос f аргумент имеет значение 105, и могут быть дополнительные аргументы запроса.

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

http://example.com/forums/forumdisplay.php?f=105&fbclid=4567
1
ответ дан 8 December 2020 в 18:38

Теги

Похожие вопросы