Для серверного блока нашего сайта в 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. Где / как мне сделать это перенаправление?
Один из подходов заключается в использовании:
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