Для серверного блока нашего сайта в 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.php
URL-адрес, в котором f
аргумент запроса имеет значение 105, и могут быть дополнительные аргументы запроса.
Пример в комментарии требует точного соответствия полному URL-адресу и не работает, если URL-адрес окажется
http://example.com/forums/forumdisplay.php?f=105&fbclid=4567