Рейтинг:0

nginx — попытка перенаправить путь с переменной внутри не удалась

флаг cm

я хотел бы перенаправить запрос на файл из

/путь/к/файлу/содержимому?путь=файл.pdf

к

/новый/путь/к/файлу/файлу.pdf

под одним и тем же доменом.

Я пробовал простые правила перезаписи или что-то подобное.

расположение ~ ^/путь/к/файлу/содержимому?путь=(.*) {
   вернуть 301 /новый/путь/к/файлу/$1;
}

К сожалению, nginx не понимает эту переменную. Что я делаю не так? У кого-нибудь есть совет для меня, пожалуйста? К сожалению, я мало знаю о reqex. Большое спасибо!

Рейтинг:0
флаг gr

В отличие от правил перезаписи apache оба место расположения и переписать директивы nginx работают с так называемыми нормализованный URI (см. место расположения директива документация чтобы узнать, что это значит), который не включает часть запроса. Проверьте, дорожка Аргумент запроса не пуст, и выполните перенаправление, если URI запроса соответствует вашему шаблону, используя следующий фрагмент конфигурации:

если ($arg_path) {
    переписать ^/путь/к/файлу/содержимому /новый/путь/к/файлу/$arg_path? постоянный;
}
Christian avatar
флаг cm
Добрый день, Иван! Большое спасибо за ответ. Я скопировал фрагмент в блок место расположения / { } Но тогда nginx игнорирует это правило. Но если я удалю часть if, т.е. напишу только перепишу...., перенаправление почти сработает. Тогда браузер говорит только /new/path/to/file/, но имя файла отсутствует.
Ivan Shatsky avatar
флаг gr
Извините, конечно, это моя опечатка, должно быть `$arg_path` вместо `$arg_file`.
Christian avatar
флаг cm
Все хорошо, вы мне очень помогаете. Большое тебе спасибо. Теперь оператор if работает. К сожалению, адрес в браузере по-прежнему заканчивается на /new/path/to/file/. Имя файла отсутствует.
Ivan Shatsky avatar
флаг gr
Браузеры конечных пользователей обычно кэшируют постоянные перенаправления HTTP 301, поэтому можно кэшировать URI из предыдущей конфигурации. Очистите кеш браузера или попробуйте из окна инкогнито.
Christian avatar
флаг cm
Извините, вы правы, как глупо с моей стороны. Вы сделали мой день, большое спасибо!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.