Мне нужно переписать старые URL-адреса на новые с помощью nginx rewrite. У меня одна проблема со строкой запроса. Перенаправление не работает, если старый URL имеет параметр строки запроса. Моя текущая конфигурация:
map $request_uri $newuri {
/old-url/path /new-url/path;
}
server {
location / {
if ($newuri) {
return 301 $newuri;
}
}
}
Ваш map
оператор выполняет сопоставление строки на $request_uri
. Переменная $request_uri
также включает строку запроса. Если вы хотите сопоставить со строкой запроса и без нее, вы должны сопоставить только перед $request_uri
, что может быть выполнено с помощью регулярное выражение синтаксис:
map $request_uri $newuri {
~*^/old-url/path /new-url/path;
}
Видеть этот документ для подробностей.