← Cloudflare Workers / workers / static-assets
Перенаправления
Чтобы настроить собственные перенаправления для Worker со статическими файлами, опишите их в текстовом файле с именем _redirects без расширения файла, в каталоге статических ресурсов вашего проекта. Сам этот файл не будет отдаваться как статический ресурс: вместо этого он будет разобран Workers, а его правила будут применены к ответам со статическими ресурсами.
Если вы используете фреймворк, у вас часто будет каталог с именем public/ или static/, и обычно содержит готовые к развёртыванию ресурсы, такие как favicon, robots.txt файлы и манифесты сайта. Эти файлы копируются в итоговый выходной каталог во время сборки, поэтому это идеальное место для написания ваших _redirects файле. Если вы не используете фреймворк, _redirects файл можно поместить прямо в ваш каталог статических ресурсов.
Структура
За строку
На каждой строке допускается только один редирект, и он должен соответствовать этому формату, иначе будет проигнорирован.
[source] [destination] [code?]-
sourcestringобязательно- Путь к файлу.
- Может включать подстановочные знаки (
*) и плейсхолдеры. - Поскольку фрагменты обрабатываются браузером, а не сетью Cloudflare, любые фрагменты в исходном коде не обрабатываются.
-
destinationstringобязательно- Путь к файлу или внешняя ссылка.
- Может включать фрагменты, строки запроса, splats, а также плейсхолдеры.
-
codenumber(по умолчанию: 302) необязательно- Необязательный параметр
Строки, начинающиеся с # будут считаться комментариями.
За файл
A _redirects файл ограничен 2,000 статическими редиректами и 100 динамическими редиректами, то есть в сумме не более 2,100 редиректов. Каждое объявление редиректа ограничено 1,000 символами.
В вашем _redirects файле:
- Порядок ваших перенаправлений имеет значение. Если для одного и того же
sourceпуть, применяется самое верхнее перенаправление. - Статические перенаправления должны располагаться перед динамическими перенаправлениями.
- Перенаправления всегда выполняются, независимо от того, соответствует ли ресурс входящему запросу.
Полный пример с несколькими редиректами может выглядеть следующим образом:
/home301 / 301
/home302 / 302
/querystrings /?query=string 301
/twitch https://twitch.tv
/trailing /trailing/ 301
/notrailing/ /nottrailing 301
/page/ /page2/#fragment 301
/blog/* https://blog.my.domain/:splat
/products/:code/:name /products?code=:code&name=:nameРасширенные перенаправления
На данный момент Cloudflare предлагает ограниченную поддержку расширенных редиректов.
| Возможность | Поддержка | Пример | Примечания |
|---|---|---|---|
| Перенаправления (301, 302, 303, 307, 308) | ✅ | /home / 301 |
По умолчанию используется код состояния 302. |
| Перезаписи (другие коды состояния) | ❌ | /blog/* /blog/404.html 404 |
|
| Splats | ✅ | /blog/* /posts/:splat |
См. Splats. |
| Заполнители | ✅ | /blog/:year/:month/:date/:slug /news/:year/:month/:date/:slug |
См. Заполнители. |
| Параметры запроса | ❌ | /shop id=:id /blog/:id 301 |
|
| Проксирование | ✅ | /blog/* /news/:splat 200 |
См. Проксирование. |
| Перенаправления на уровне домена | ❌ | workers.example.com/* workers.example.com/blog/:splat 301 |
|
| Перенаправление по стране или языку | ❌ | / /us 302 Country=us |
|
| Перенаправление по cookie | ❌ | /\* /preview/:splat 302 Cookie=preview |
Перенаправления и сопоставление заголовков
Перенаправления выполняются раньше заголовков, поэтому если запрос соответствует правилам в обоих файлах, перенаправление будет иметь приоритет.
Splats
При совпадении splat (звёздочка, *) жадно соответствует всем символам. В URL можно указать только один splat.
Совпавшее значение можно использовать в адресе перенаправления с помощью :splat.
Заполнители
Плейсхолдер можно определить с помощью :placeholder_name. Двоеточие (:) с последующей буквой обозначает начало плейсхолдера, и имя плейсхолдера после неё должно состоять из буквенно-цифровых символов и символов подчёркивания (:[A-Za-z]\w*). На каждый именованный заполнитель можно ссылаться только один раз. Заполнители соответствуют всем символам, кроме разделителя, которым в составе хоста является точка (.) или косую черту (/) и может быть только косой чертой (/) если она является частью пути.
Аналогично, совпавшее значение можно использовать в значениях перенаправления с помощью :placeholder_name.
/movies/:title /media/:titleПроксирование
Проксирование поддерживает только относительные URL-адреса на вашем сайте. Проксирование внешних доменов невозможно.
Применяется только первый редирект в вашем файле. Например, в приведенном ниже примере запрос к /a отобразит /b, и запрос к /b отобразит /c, но /a не будет отображать /c.
/a /b 200
/b /c 200Превышает _redirects лимиты
A _redirects файл поддерживает не более 2,000 статических редиректов и 100 динамических редиректов, то есть в сумме не более 2,100 редиректов. Используйте Bulk Redirects для обработки перенаправлений, если их количество превышает лимит в 2,100 правил перенаправления, действующий в _redirects.
Чтобы использовать Bulk Redirects, см. Документация панели управления Bulk Redirects или Документация по API Bulk Redirects.