← Images / images / optimization / transformations
Настройте правила перезаписи
С помощью Transform Rules можно переписывать URL для каждого изображения, преобразуемого через Images.
На этой странице приведены примеры для следующих сценариев:
- Раздача изображений по пользовательским путям
- Измените существующие URL-адреса для совместимости с преобразованиями в Images
- Трансформация каждого изображения, запрашиваемого в вашей зоне, с помощью Images
Чтобы создать правило:
-
На панели управления Cloudflare перейдите к разделу Обзор правил страницу.
Перейдите в Обзор ↗ -
Выберите Создать правило рядом с URL Rewrite Rules.
Прежде чем начать
Каждое правило выполняется до и после запроса на преобразование.
Если путь запроса совпадает с путём, по которому исходные изображения хранятся на вашем сервере, запрос за исходным изображением может зациклиться.
Чтобы направить запрос на исходный сервер, можно проверить наличие строки image-resizing в Via заголовок:
...and (not (any(http.request.headers["via"][*] contains "image-resizing")))
Раздача изображений по пользовательским путям
По умолчанию запросы на трансформацию изображений через Images обслуживаются из /cdn-cgi/image/ путь.
Для перезаписи URL можно использовать Transform Rules.
Базовая версия
Планы Free и Pro поддерживают правила сопоставления строк (включая операции с подстановочными знаками), не требующие регулярных выражений.
Этот пример позволяет переписать запрос от example.com/images к example.com/cdn-cgi/image/:
(starts_with(http.request.uri.path, "/images")) and (not (any(http.request.headers["via"][*] contains "image-resizing")))concat("/cdn-cgi/image", substring(http.request.uri.path, 7))Расширенная версия
Существует расширенная версия Transform Rules с поддержкой регулярных выражений.
Этот пример позволяет переписать запрос от example.com/images к example.com/cdn-cgi/image/:
(http.request.uri.path matches "^/images/.*$") and (not (any(http.request.headers["via"][*] contains "image-resizing")))regex_replace(http.request.uri.path, "^/images/", "/cdn-cgi/image/")Измените существующие URL-адреса для совместимости с преобразованиями в Images
Этот пример позволяет переписать параметры URL-адреса так, чтобы они были совместимы с Images:
(http.request.uri matches "^/(.*)\\?width=([0-9]+)&height=([0-9]+)$")regex_replace(
http.request.uri,
"^/(.*)\\?width=([0-9]+)&height=([0-9]+)$",
"/cdn-cgi/image/width=${2},height=${3}/${1}"
)Оставьте Запрос > Rewrite to > Статический поле пустым.
Пропускайте через Images каждое изображение, запрошенное в вашей зоне
Этот пример позволяет трансформировать каждое изображение, запрашиваемое в вашей зоне, с помощью format=auto параметр:
(http.request.uri.path.extension matches "(jpg)|(jpeg)|(png)|(gif)") and (not (any(http.request.headers["via"][*] contains "image-resizing")))regex_replace(http.request.uri.path, "/(.*)", "/cdn-cgi/image/format=auto/${1}")