Я развернул сайт в реальном времени и пытаюсь перенаправить некоторые из исходных URL-адресов на новые URL-адреса. Я новичок в настройке NGINX для таких редиректов.
Этот работает:
location /contactus.aspx {
return 301 $scheme://$host/contacts;
}
Они не работают (URL-адрес приводит к ошибке 404 и не перенаправляет):
location /productcatalog.aspx?directoryid=11 {
return 301 $scheme://$host/hard-drive-cases;
}
location /productdetails.aspx?productid=26* {
return 301 $scheme://$host/lto-5-blue;
}
Я уже service nginx reload
успешно без ошибок.
Самая большая разница между действующими перенаправлениями и неработающими перенаправлениями - это добавленные параметры. Как лучше всего перенаправить URL-адреса с параметрами (и подстановочным знаком в конце), чтобы он работал правильно?
В location
директива не соответствует строке запроса. Так что тебе придется заняться чем-нибудь другим.
Я полагаю, у вас есть большой количество из них для работы, поэтому я бы предложил использовать пару map
s. Например:
map $arg_directoryid $mycategory {
11 hard-drive-cases;
12 some-other-category;
default ""; # would go to the homepage, change it to go to some other page
}
Тогда вы бы сделали location
Такие как:
location /productcatalog.aspx {
return 301 $scheme://$host/$mycategory;
}
Сделайте второй map
и location
для $arg_productid
соответствующий productdetails.aspx
. Однако, если он очень большой, у вас могут быть проблемы с производительностью, и вам нужно отказаться от него и выполнить некоторые сценарии для получения перенаправления из базы данных.
В map
должно быть в твоем http
блок, не в пределах server
блок. Если вы размещаете несколько сайтов, на мой взгляд, лучше всего разместить их непосредственно перед server
блок, которому они соответствуют.