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

Новая структура постоянных ссылок: цикл перезаписи nginx

Я создаю новую структуру постоянных ссылок на своем веб-сайте. После добавления некоторых правил перезаписи nginx возникает цикл перенаправления в / vlogger / info / info / info / info / ...

Старая постоянная ссылка:

/vlogger/user-name

Новая постоянная ссылка:

/vlogger/info/user-name

текущее правило nginx:

location ~ /vlogger/(.*)$ {
    rewrite ^/vlogger/info/$1 permanent;
}

Как я могу проверить, всегда ли установлен второй каталог (/ vlogger / "info /") и успешно ли перенаправление выполняется без цикла?

(* Имя пользователя содержит только: a-z0-9 и - (минус))

Я нашел решение:

rewrite ^/vlogger/([^/]*)$ /vlogger/info/$1 permanent;

Это перенаправление с / vlogger / name на / vlogger / info / name

Nginx прекращает поиск регулярных выражений в первом матче. Таким образом, просто поместите над ним более конкретное совпадение. Вам нужно снова использовать совпадение регулярного выражения (imo), потому что совпадения префиксов используются только тогда, когда совпадений регулярного выражения нет. (Очень рекомендую прочитать мануал: http://nginx.org/en/docs/http/ngx_http_core_module.html#location)

location ~ /vlogger/info/(.*)$ {
    # whatever you want to do with them
}

location ~ /vlogger/(.*)$ {
    rewrite ^ /vlogger/info/$1 permanent;
}

Обратите внимание, что регулярное выражение, вероятно, не обязательно в вашем случае (если у вас есть другое регулярное выражение, вам может потребоваться использовать регулярное выражение tho, imo. Опять же, прочтите ручной ввод). Вы можете получить лучшую производительность с префиксными строками ...

location /vlogger/info/ {
    # whatever you want to do with them
}

location /vlogger/ {
    rewrite ^ /vlogger/info/$1 permanent;
}