Cara Membuat Subdomain dengan Cloudflare Worker dan Pindah Domain Tanpa Tautan Rusak

Subdomain seperti cbt.domainanda.com atau scan.domainanda.com cocok untuk memisahkan aplikasi dari situs utama. Dengan Cloudflare Workers, setiap subdomain bisa langsung menjalankan aplikasinya sendiri, lengkap dengan HTTPS, tanpa mengatur server atau record DNS secara manual. Panduan ini juga membahas cara memindahkan subdomain ke domain baru tanpa membuat tautan lama rusak, seperti saat OutsiderDev pindah dari outsider.my.id ke outsiderdev.com.
Yang perlu disiapkan
- Domain yang sudah aktif di Cloudflare (nameserver mengarah ke Cloudflare). Lihat artikel cara beli domain di Cloudflare jika belum punya.
- Satu Worker yang sudah di-deploy, misalnya aplikasi Anda atau Worker contoh "Hello World".
Custom Domain atau Route?
- Custom Domain menjadikan Worker sebagai "server" untuk seluruh subdomain itu. Cloudflare membuat record DNS dan sertifikat HTTPS sendiri. Pilih ini untuk aplikasi utuh seperti
cbt.domainanda.com. - Route memasang Worker di depan situs yang sudah ada, berdasarkan pola URL seperti
domainanda.com/api/*. Pilih ini jika Worker hanya menangani sebagian jalur.
Cara 1: Pasang lewat dashboard
- Buka Workers & Pages di dashboard Cloudflare dan pilih Worker Anda.
- Masuk ke Settings > Domains & Routes, klik Add, lalu pilih Custom Domain.
- Ketik subdomain, misalnya
cbt.domainanda.com, lalu klik Add Custom Domain. - Tunggu beberapa saat sampai statusnya aktif, lalu buka alamatnya di browser.
Jika muncul galat bahwa record sudah ada, hapus dulu record CNAME dengan nama yang sama di menu DNS > Records, karena Custom Domain tidak bisa dibuat di atas CNAME yang sudah ada.
Cara 2: Pasang lewat wrangler.toml
Jika Worker di-deploy dengan Wrangler, cukup tambahkan blok routes lalu jalankan npx wrangler deploy. Satu Worker boleh punya beberapa Custom Domain:
name = "ujian-cbt" main = "src/index.js" compatibility_date = "2026-10-01" [[routes]] pattern = "cbt.domainanda.com" custom_domain = true
Custom Domain hanya cocok dengan nama host yang persis sama. Domain domainanda.com tidak otomatis mencakup www.domainanda.com, dan wildcard seperti *.domainanda.com tidak didukung.
Memindahkan subdomain ke domain baru
Saat pindah domain, misalnya dari cbt.domainlama.id ke cbt.domainbaru.com, alamat lama sebaiknya tidak langsung dimatikan. Tautan yang sudah dibagikan ke siswa atau pengguna, bookmark, dan peringkat di Google masih mengarah ke sana. Google menyarankan pengalihan permanen (301) di sisi server dan mempertahankannya minimal satu tahun.
Pilihan A: Pengalihan di dalam Worker (paling mudah)
Tambahkan domain baru sebagai Custom Domain kedua di Worker yang sama, biarkan domain lama tetap terpasang, lalu tambahkan beberapa baris di awal handler fetch:
const DOMAIN_UTAMA = 'cbt.domainbaru.com';
const DOMAIN_LAMA = ['cbt.domainlama.id'];
export default {
async fetch(request, env, ctx) {
const url = new URL(request.url);
if (DOMAIN_LAMA.includes(url.hostname)) {
url.hostname = DOMAIN_UTAMA;
return Response.redirect(url.toString(), 301);
}
// ... kode aplikasi seperti biasa
}
};
Jalur dan parameter URL ikut terbawa, jadi cbt.domainlama.id/ujian?kode=A1 berpindah ke cbt.domainbaru.com/ujian?kode=A1.
Pilihan B: Redirect Rule tanpa kode
Jika Worker sudah dilepas dari domain lama, gunakan aturan pengalihan bawaan Cloudflare di zona domain lama:
- Pastikan subdomain lama punya record DNS yang di-proxy (ikon awan oranye). Jika record-nya sudah terhapus, buat record pengganti, misalnya tipe
AAAAbernilai100::dengan proxy aktif. - Buka Rules > Overview, klik Create rule, lalu pilih Redirect Rule.
- Pilih pola wildcard dan isi seperti di bawah, dengan kode status 301 dan opsi Preserve query string dicentang, lalu Deploy.
Request URL : https://cbt.domainlama.id/*
Target URL : https://cbt.domainbaru.com/${1}
Status code : 301
Setelah pindah, jangan lupa
- Uji pengalihan dengan
curl -I https://cbt.domainlama.id/ujian. Hasilnya harus301dengan headerLocationke domain baru. - Perbarui tautan internal, sitemap, dan tag
canonicalsupaya langsung memakai domain baru, bukan mengandalkan pengalihan. - Periksa CORS dan login. Tambahkan domain baru di setiap daftar domain yang diizinkan, misalnya pengaturan CORS API Anda atau Redirect URLs di Supabase Auth. Sesi login dan data
localStorageterikat ke domain, jadi pengguna perlu masuk ulang sekali. - Daftarkan domain baru di Google Search Console (lihat artikel cara daftar Google Search Console). Untuk perpindahan antar domain atau subdomain, Search Console juga punya fitur Perubahan Alamat (Change of Address).
- Pertahankan domain lama beserta pengalihannya minimal satu tahun, dan jangan biarkan domain lama kedaluwarsa.
Sumber: Custom Domains, Cloudflare Workers, Single Redirects, Cloudflare Rules, dan Site moves with URL changes, Google Search Central.