Для первого деплоя статического сайта на Cloudflare Pages выясни две вещи: где собирается проект и какая папка содержит готовые файлы. Выбери Git integration, если хочешь собирать сайт автоматически при push. Direct Upload подходит, когда CI или локальная машина уже подготовили output. После публикации проверь реальные URL, вложенные маршруты и способ отката.
1. Найди build output
Собери production-версию и найди в ней конечные index.html, CSS, JavaScript и assets. Это могут быть dist, build, out или другая директория. Не выбирай путь по имени: открой папку и убедись, что в ней лежит сайт, а не исходный код.
Например, если в package.json проекта настроен скрипт build, запуск может выглядеть так:
npm run build
У Vite-проекта распространённый output — dist, но проверь настройки именно своего проекта. Запиши три значения: build command, output directory и root directory. В монорепозитории root — папка приложения; Pages строит output относительно неё. Если build не нужен, как у простого набора HTML-файлов, оставь команду сборки пустой. В Git integration эти поля задаются отдельно (официальная инструкция).
2. Выбери публикацию: Git или Direct Upload
Git integration подключает репозиторий GitHub или GitLab к Pages. При настройке выбери production branch, build command и output directory. Push в production branch обновляет production-сайт. Коммиты в других разрешённых ветках создают preview deployment; в деталях деплоя посмотри hash URL и branch alias. По умолчанию preview-деплои доступны публично, поэтому закрой их Cloudflare Access, если в них есть закрытые данные. Cloudflare добавляет к ним X-Robots-Tag: noindex, но проверь заголовок своего preview через curl -I https://<PREVIEW_URL> (preview deployments).
Direct Upload публикует заранее собранную папку. Через Wrangler последовательность для нового проекта такая:
npx wrangler login
npx wrangler pages project create
npm run build
npx wrangler pages deploy dist
При создании Wrangler спросит имя Pages-проекта и production branch; замени dist на свой output directory. Production-адрес будет <PROJECT_NAME>.pages.dev. Для тестовой ветки загрузи те же готовые файлы как preview:
npx wrangler pages deploy dist --branch=preview
В dashboard можно выбрать Create application → Get started → Drag and drop и передать одну папку файлов или ZIP. При следующем обновлении открой проект и создай новый deployment. Сверь ограничения размера и число файлов в текущем руководстве Direct Upload.
Тип проекта нельзя переключить с Git на Direct Upload или обратно. Для уже существующего Git-connected проекта есть исключение: автоматические deployments можно отключить и публиковать его вручную через Wrangler. Dashboard drag-and-drop для такого проекта недоступен. Это ручная загрузка в прежний проект, а не смена типа интеграции.
3. Проверь страницу и настрой домен
После деплоя открой адрес из Pages deployment details и сверь, что это ожидаемые commit и ветка. Проверь главную, затем вложенный URL напрямую и после обновления страницы. Если главная открывается, а /catalog/item отдаёт 404, настрой fallback согласно роутеру. Не направляй все неизвестные адреса на главную: оставь задуманный 404.
В DevTools проверь Console и Network: HTML, CSS, JS, изображения и шрифты должны загружаться без 404. Если появилась пустая страница, сначала проверь выбранную output-папку и наличие index.html, а не домен.
Чтобы подключить домен, открой Workers & Pages → свой Pages project → Custom domains → Set up a domain и добавь нужное имя. Сначала свяжи домен с Pages в панели: CNAME, созданный отдельно без регистрации домена в проекте, может не разрешаться. Для поддомена добавь CNAME к <PROJECT_NAME>.pages.dev; apex-домен требует, чтобы зона и nameservers были настроены через Cloudflare. Следуй инструкции custom domains и не меняй посторонние DNS-записи.
4. Обновление, rollback и серверные функции
Для Git-проекта обычное обновление — commit и push в production branch; build и deployment выполняет Pages. Для Direct Upload повтори production build и отправь ту же output-папку в тот же Pages project. Сохраняй commit или deployment ID вместе с проверенным URL, чтобы понимать, какая версия сейчас опубликована.
Если production deployment сломался, открой Deployments → All deployments, выбери предыдущий успешно собранный production deployment и через меню действий нажми Rollback to this deployment. Подтверди переключение. Preview deployment нельзя выбрать целью rollback; откатить можно только ранее успешно собранный production deployment (Cloudflare Rollbacks).
Публикация статики не подтверждает работу форм, авторизации или оплаты. Проверяй backend отдельно безопасным тестовым потоком. Всё встроенное в клиентский JavaScript видно посетителю: не помещай туда API-ключи, пароли и серверные токены. Если используешь Pages Functions в папке functions/, для Direct Upload загружай их через Wrangler: dashboard drag-and-drop такую папку не собирает. Проверь секреты в bundle и source maps; см. гайд по API-ключам.
Для сайтов с серверной логикой и интеграциями смотри MK Ultra.
