Настройка перенаправления запросов
С помощью перенаправления запросов вы можете перенастроить пути запросов к вашему контенту. Это может быть полезно при изменении структуры файлов и папок на источнике. Кроме того, перенаправление запросов можно использовать, если при переезде ресурса на новый адрес вы хотите сохранить ранжирование вашего контента в поисковых системах.
Чтобы включить перенаправление запросов на CDN-ресурсе:
-
В консоли управления
выберите каталог, в котором расположен ресурс. -
Выберите сервис Cloud CDN.
-
Нажмите на имя нужного CDN-ресурса.
-
В правом верхнем углу нажмите кнопку
Редактировать. -
Включите опцию Перенаправление запросов.
-
В поле Правило Rewrite задайте правило. Например:
/(.*) /new-folder/$1
.Правило Rewrite должно содержать две разделенные пробелом директивы: исходный путь, который требуется заменить, и измененный путь — то, на что меняется исходный путь.
В правиле вы можете использовать регулярные выражения. Подробнее см. в разделе Правило Rewrite.
-
В поле Флаг задайте нужный флаг:
break
— завершает обработку текущего набора директив.last
— завершает обработку текущего набора директив и начинает поиск нового CDN-сервера, соответствующего новому URI.redirect
— возвращает пользователю временныйredirect
с кодом302
. Флаг используется, если заменяющая строка не начинается сhttp://
,https://
или$scheme
.permanent
— возвращает пользователю постоянныйredirect
с кодом301
.
-
Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для редактирования ресурсов:
yc cdn resource update --help
-
Получите список всех ресурсов в каталоге по умолчанию:
yc cdn resource list --format yaml
Результат:
- id: bc8ceo77zu7h******** folder_id: b1gt6g8ht345******** cname: cdn.example.com created_at: "2024-09-10T19:15:16.305043Z" updated_at: "2024-09-11T17:19:50.622628Z" active: true options: edge_cache_settings: enabled: true default_value: "345600" query_params_options: ignore_query_string: enabled: true value: true slice: enabled: true value: true host_options: host: enabled: true value: cdn-source-sample-bucket.storage.yandexcloud.net stale: enabled: true value: - error - updating ignore_cookie: enabled: true value: true origin_group_id: "328146" origin_group_name: Origins for cdn.example.com (225300) origin_protocol: HTTPS ssl_certificate: type: CM status: READY data: cm: id: fpquvh0em4no********
Сохраните значение идентификатора CDN-ресурса (поле
id
в начале вывода), оно понадобится на следующем шаге. -
Включите перенаправление запросов, указав идентификатор CDN-ресурса, сохраненный на предыдущем шаге:
yc cdn resource update <идентификатор_ресурса> \ --rewrite-body '<правило_Rewrite>' \ --rewrite-flag <флаг>
Где:
-
--rewrite-body
– правило Rewrite. Например:--rewrite-body '/(.*) /new-folder/$1'
.Правило Rewrite должно содержать две разделенные пробелом директивы: исходный путь, который требуется заменить, и измененный путь — то, на что меняется исходный путь.
В правиле вы можете использовать регулярные выражения. Подробнее см. в разделе Правило Rewrite.
-
--rewrite-flag
– флаг. Возможные значения:break
— завершает обработку текущего набора директив.last
— завершает обработку текущего набора директив и начинает поиск нового CDN-сервера, соответствующего новому URI.redirect
— возвращает пользователю временныйredirect
с кодом302
. Флаг используется, если заменяющая строка не начинается сhttp://
,https://
или$scheme
.permanent
— возвращает пользователю постоянныйredirect
с кодом301
.
Результат
id: bc8ceo77zu7h******** folder_id: b1gt6g8ht345******** cname: cdn.example.com created_at: "2024-09-10T19:15:16.305043Z" updated_at: "2024-09-11T17:55:21.100567Z" active: true options: edge_cache_settings: enabled: true default_value: "345600" query_params_options: ignore_query_string: enabled: true value: true slice: enabled: true value: true host_options: host: enabled: true value: cdn-source-sample-bucket.storage.yandexcloud.net stale: enabled: true value: - error - updating ignore_cookie: enabled: true value: true rewrite: enabled: true body: /(.*) /new-folder/$1 flag: BREAK origin_group_id: "328146" origin_group_name: Origins for cdn.example.com (225300) origin_protocol: HTTPS ssl_certificate: type: CM status: READY data: cm: id: fpquvh0em4no********
Чтобы отключить для CDN-ресурса перенаправление запросов, выполните команду, указав идентификатор нужного CDN-ресурса:
yc cdn resource update <идентификатор_ресурса> --clear-rewrite
Подробнее о команде
yc cdn resource update
см. в справочнике CLI. -
Воспользуйтесь методом REST API update для ресурса Resource или вызовом gRPC API ResourceService/Update.
Чтобы новые настройки существующего ресурса применились к CDN-серверам, может потребоваться до 15 минут. После этого рекомендуется очистить кеш ресурса.