internal-redirect: Внутренний редирект на указанный URI
Установка Debian/Ubuntu
Эти документы применимы к пакету APT nginx-module-internal-redirect, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте репозиторий APT, как описано в настройке репозитория APT.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-internal-redirect
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия | Компонент | Архитектуры |
|-------------|---------------------|-------------|-----------------|
| debian | bookworm | main | amd64, arm64 |
| debian | bookworm-mainline | main | amd64, arm64 |
| debian | trixie | main | amd64, arm64 |
| debian | trixie-mainline | main | amd64, arm64 |
| ubuntu | focal | main | amd64, arm64 |
| ubuntu | focal-mainline | main | amd64, arm64 |
| ubuntu | jammy | main | amd64, arm64 |
| ubuntu | jammy-mainline | main | amd64, arm64 |
| ubuntu | noble | main | amd64, arm64 |
| ubuntu | noble-mainline | main | amd64, arm64 |
ngx_http_internal_redirect_module позволяет выполнять внутренние редиректы. В отличие от переписывания URI, редирект осуществляется после фазы переписывания. В настоящее время поддерживаются следующие фазы запросов: preaccess, access, precontent и content, что позволяет использовать его с многими официальными или сторонними модулями nginx.
Этот модуль вдохновлён официальным модулем nginx ngx_http_internal_redirect_module.
Содержание
Статус
Этот модуль Nginx в настоящее время считается экспериментальным. Проблемы и запросы на изменение кода приветствуются, если вы столкнулись с какими-либо проблемами.
Сводка
server {
listen 127.0.0.1:80;
server_name localhost;
location /old {
internal_redirect -i ^/old(.+) /new$1 phase=preaccess;
}
location /new {
return 200 'текущий uri: $uri';
}
}
Директивы
internal_redirect
Синтаксис: internal_redirect [-i] pattern replacement [phase=<фаза>] [flag=<флаг>] [if=<условие> | if!=<условие>]
По умолчанию: -
Контекст: http, server, location
Устанавливает новый URI для внутреннего редиректа запроса. Также возможно использовать именованное местоположение вместо URI. Значение замены может содержать переменные. Если значение uri пустое, редирект не будет выполнен. После выполнения внутреннего редиректа URI запроса будет изменён, и запрос будет возвращён в фазу NGX_HTTP_SERVER_REWRITE_PHASE (server_rewrite). Запрос продолжится с местоположением по умолчанию сервера. Позже на фазе NGX_HTTP_FIND_CONFIG_PHASE (find_config) будет выбрано новое местоположение, основываясь на новом URI запроса.
Для получения дополнительной информации о фазах запросов nginx, пожалуйста, обратитесь к Руководству разработчика#http_phases
Необязательный параметр -i указывает на то, что необходимо выполнить несенситивное совпадение регулярного выражения.
Необязательный параметр phase= используется для указания фазы, в которой это правило вступает в силу. Возможные значения: preaccess, access, precontent и content. Правила каждой фазы будут выполнены полностью перед выполнением внутреннего редиректа. Значение по умолчанию — preaccess.
Необязательный параметр flag= используется для дополнительных действий после оценки правила. Значение этого параметра может быть одним из:
* break
остановливает обработку текущего набора правил на этой фазе и немедленно выполняет внутренний редирект;
* status_301
возвращает редирект с кодом 301.
* status_302
возвращает редирект с кодом 302.
* status_303
возвращает редирект с кодом 303.
* status_307
возвращает редирект с кодом 307.
* status_308
возвращает редирект с кодом 308.
Параметр if позволяет включить условный редирект. Запрос не будет перенаправлен, если условие оценивается как "0" или пустая строка. Вы также можете использовать форму if!= для отрицательных суждений.