Nginx: перенаправление со старого URL на новый и сохранение строки запроса

Мне нужно переписать старые адреса на новые с помощью nginx rewrite. У меня одна проблема со строкой запроса. Перенаправление не работает, если старый URL имеет параметр строки запроса. Моя текущая конфигурация:

map $request_uri $newuri {
    /old-url/path /new-url/path;
}

server {
    location / {
        if ($newuri) {
            return 301 $newuri;
        }
    }
}
1
задан 22 December 2016 в 11:39
1 ответ

Ваш оператор map выполняет сопоставление строки на $ request_uri . Переменная $ request_uri также включает строку запроса. Если вы хотите сопоставить со строкой запроса или без нее, вам следует сопоставить только перед $ request_uri , что может быть выполнено с использованием синтаксиса регулярного выражения :

map $request_uri $newuri {
    ~*^/old-url/path /new-url/path;
}

См. подробности в этом документе .

2
ответ дан 3 December 2019 в 20:31

Теги

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