Назад | Перейти на главную страницу

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

Мне нужно переписать старые 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;
}

Видеть этот документ для подробностей.