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

Перенаправление на основе параметра

Я пытаюсь перенаправить страницу на основе переданных параметров.

Я хочу перенаправить

перезаписать ^ / join_trial в / test? постоянный;

и

перезаписать ^ / join_trial? Discount = free (. *) / test2? постоянный;

Первый работает, а второй нет. Похоже, что nginx не принимает регулярное выражение (. *).

Для первого работают следующие случаи.

/ join_trial? test = aaaaa

/ join_trial? 923849 = ааа

В принципе, после / join_trial.

Я хочу иметь перенаправление, когда пользователь добавляет ? скидка = бесплатно(здесь все идет).

Возможно ли это с nginx?

Вы не можете сопоставить строку запроса в rewrite. Поэтому вам нужно напрямую проверить аргумент.

Например:

if ($arg_discount ~ ^free) {
    rewrite ^/join_trial /test2? permanent;
}
rewrite ^/join_trial /test? permanent;

И я подозреваю, что ты действительно не хотите отправлять 301 редирект, как тогда увидит пользователь /test или /test2 прямо в адресной строке. Возможно, вы действительно хотите обрабатывать эти URL-адреса только внутренне? В таком случае измените permanent к last.