Yêu cầu trước khi bắt đầu
- Đã xong Bước 2: Cài Claude AI (để AI đọc bảng bản ghi và gõ lệnh giúp bạn)
- Đã mua ít nhất 1 tên miền và đăng nhập được trang quản lý tên miền của nơi bạn mua
- Có tài khoản Cloudflare (miễn phí tại cloudflare.com)
Chọn đúng 1 trong 3 cách trước khi làm
Đây là cách chúng tôi đang dùng cho hơn 30 tên miền phụ của truongminhkien.vn (mọi trang lead magnet và mọi trang của hệ thống này). Hợp nhất khi tên miền đang chạy website hoặc email thật và bạn không muốn rủi ro.
Chúng tôi đã làm cho truongminhkien.com → truongminhkien.vn, kiểm thật 5/5 đường dẫn đúng. Cần tên miền cũ đã nằm sẵn ở Cloudflare.
Chúng tôi đã lập kế hoạch đầy đủ cho truongminhkien.vn nhưng quyết định không làm: đo thật thì lợi ích tốc độ gần bằng 0 (máy chủ ở Kuala Lumpur đã gần Việt Nam, đã có cache và HTTP/3, các trang lead magnet vốn đã chạy trên Cloudflare Pages), trong khi rủi ro đổi hơn 20 bản ghi của tên miền đang chạy thật là có thật. Vì vậy phần "Cách C" bên dưới là kế hoạch, chưa được chạy thật.
Cách A — Gắn tên miền phụ vào Cloudflare Pages
Đưa trang lên Cloudflare Pages
Trong thư mục chứa file index.html của trang, chạy (Claude AI làm giúp):
npx wrangler pages project create <tên-dự-án> npx wrangler pages deploy <thư-mục-trang> --project-name <tên-dự-án>
Sau bước này trang đã chạy được ở <tên-dự-án>.pages.dev.
Thêm CNAME ở nơi quản lý DNS
Thêm bản ghi CNAME: tên phụ (ví dụ trienkhaimail) → <tên-dự-án>.pages.dev. Chỉ thêm, không sửa hay xoá bản ghi đang có.
Thêm đúng tên phụ đó làm Custom Domain trong Cloudflare Pages
dash.cloudflare.com → Workers & Pages → dự án → Custom domains → thiết lập tên miền tùy chỉnh → nhập đúng tên phụ → chọn "Nhà cung cấp DNS của tôi" (nếu DNS không ở Cloudflare) → bấm kiểm tra bản ghi DNS. Sau chừng 15-20 giây trạng thái chuyển "Active — SSL enabled". Bước 2 và bước 3 đều bắt buộc — thiếu bước nào cũng lỗi (xem bẫy 5).
Kiểm bằng lệnh, đừng chỉ tin giao diện
curl -I https://<tên-phụ>.<tên-miền> phải ra 200 và không báo lỗi SSL. Mở thêm trang bằng tab ẩn danh để chắc không dính cache.
Cách B — Chuyển hướng tên miền cũ về tên miền chính
Xem các rule đã có sẵn TRƯỚC khi tạo rule mới
Cloudflare → tên miền cũ → Rules → Redirect Rules. Đọc hết danh sách và ghi lại thứ tự (xem bẫy 1 — rất dễ mất công vì bước này).
Tạo 2 rule theo đúng thứ tự
Rule 1 (đặt trên): chỉ cho đường dẫn bị lệch tên giữa hai site, ví dụ /duong-dan-cu → https://ten-mien-chinh/duong-dan-moi/, mã 301.
Rule 2 (đặt dưới): rule chung, giữ nguyên đường dẫn và tham số:
When: Hostname contains ten-mien-cu
Then: Dynamic → concat("https://ten-mien-chinh", http.request.uri.path)
Mã 301, bật "Preserve query string"Rule 1 phải đứng trước Rule 2, nếu không rule chung chạy trước và đường dẫn lệch tên vẫn bị dẫn sai.
Bật Proxied cho cả bản ghi gốc và www
Redirect Rules chỉ chạy trên lưu lượng đi qua Cloudflare (đám mây cam). Bản ghi ở chế độ "DNS only" (đám mây xám) sẽ đi thẳng tới máy chủ và không bao giờ chạm tới rule.
Test bằng tab mới hoặc thêm tham số né cache
Gõ ten-mien-cu, www.ten-mien-cu và vài đường dẫn cụ thể, kèm ?cb=1, ?cb=2... Đủ tất cả đường dẫn quan trọng mới coi là xong.
Cách C — Đổi nameserver (kế hoạch, chưa chạy thật)
Chỉ làm khi bạn thật sự cần Cloudflare quản lý toàn bộ DNS. Đây là danh sách kiểm chúng tôi đã soạn cho truongminhkien.vn trước khi quyết định không đổi.
- Cloudflare → Add a domain → nhập tên miền → gói Free → để Cloudflare tự quét DNS hiện có.
- Đếm số bản ghi Cloudflare vừa quét và đối chiếu từng dòng với bảng thật ở nơi bạn đang quản lý DNS (quét tự động hay bỏ sót TXT dài). Bổ sung tay bản ghi thiếu.
- Các bản ghi xác thực email (SPF, DKIM, DMARC của Resend hoặc Lark Mail) phải để DNS only (xám), không proxy; sai 1 ký tự khoá DKIM là hỏng gửi thư.
- Bản ghi trỏ về website và các CNAME
*.pages.devcó thể để Proxied (cam) để hưởng CDN. - Lấy 2 nameserver Cloudflare cấp, đổi ở nơi đăng ký tên miền. Trong lúc DNS lan truyền, site vẫn chạy bằng nameserver cũ.
- Sau khi đổi: kiểm
dig NS, từng tên miền phụ, trạng thái Verified của dịch vụ email, và thử điền 1 form lead thật.
Tôi có tên miền [điền tên miền]. Làm giúp tôi: 1. Chạy nslookup -type=NS để biết DNS đang nằm ở đâu. 2. Liệt kê mọi bản ghi DNS hiện có (A, CNAME, MX, TXT). 3. Hỏi tôi muốn cách nào: A (gắn tên miền phụ vào Cloudflare Pages) / B (chuyển hướng tên miền cũ về tên miền chính) / C (đổi nameserver về Cloudflare). Nhắc tôi rằng cách C chưa từng được chạy thật ở hệ thống mẫu. Quy tắc: chỉ THÊM bản ghi, không tự xoá hay sửa bản ghi đang có. Mọi bước cần mật khẩu, OTP hoặc quét mã tôi tự làm. Nếu bạn không gõ được vào trang DNS thì in bảng bản ghi nguyên văn cho tôi gõ tay, rồi bạn chỉ kiểm lại bằng nslookup. Ngôn ngữ: tiếng Việt.
⚠ Bẫy đã gặp + cách gỡ
🔴 1. Đã tạo đúng rule chuyển hướng nhưng KHÔNG rule nào chạy — vì có 1 rule cũ đứng trên cùng
Redirect Rules xử lý theo kiểu khớp đầu tiên thắng rồi dừng. Tên miền nối từ Webcake có sẵn 1 rule "Chuyển hướng từ thư mục gốc đến WWW" nằm ở vị trí số 1, mà bản hướng dẫn ban đầu không hề nhắc tới. Kết quả: cả 5 đường dẫn test đều sai dù cấu hình đúng 100%.
Cách gỡ: luôn đọc danh sách rule có sẵn trước khi tạo; kéo rule cũ xuống cuối (không xoá) bằng nút "..." → "Di chuyển xuống".
2. Chuyển hướng chạy với tên miền trần nhưng không chạy với www
Bản ghi www đang ở "DNS only" (đám mây xám) nên lưu lượng đi thẳng tới máy chủ, không chạm engine Rules của Cloudflare.
Cách gỡ: Edit bản ghi, chỉ bật công tắc Proxy (giữ nguyên tên, loại, đích), Save.
3. Đã sửa đúng mà thử vẫn thấy nhảy sai
Chrome cache chuyển hướng 301 rất mạnh; Ctrl+Shift+R vẫn dính cache với URL từng gõ trước đó.
Cách gỡ: thêm tham số phân biệt (?cb=1), hoặc mở tab hoàn toàn mới / cửa sổ ẩn danh, trước khi kết luận rule sai.
4. Cloudflare báo lỗi cú pháp khi nhập chuyển hướng kiểu Dynamic
Chuỗi trần đứng một mình không được chấp nhận làm biểu thức, và concat() với đúng 1 tham số bị báo "số lượng đối số không hợp lệ" (hàm này bắt buộc từ 2 tham số).
Cách gỡ: viết concat("https://ten-mien-chinh/duong-dan/", "") (thêm chuỗi rỗng làm tham số thứ 2), hoặc đổi sang kiểu "Static".
🔴 5. Tên miền phụ gõ vào báo lỗi SSL ERR_SSL_VERSION_OR_CIPHER_MISMATCH
Chỉ thêm CNAME ở nơi quản lý DNS mà quên thêm đúng tên phụ đó làm Custom Domain trong dự án Cloudflare Pages: tên miền phân giải được nhưng Cloudflare chưa cấp chứng chỉ cho hostname đó nên bắt tay SSL luôn lỗi.
Cách gỡ: luôn làm đủ 2 bước (CNAME + Custom Domain), rồi kiểm bằng curl -I cả 2 phía trước khi báo "xong".
6. Authentication error (code 10000) khi tự gọi API Cloudflare bằng token lấy từ file cấu hình của wrangler
File OAuth của wrangler trên Windows nằm ở C:\Users\<tên>\.wrangler\config\default.toml, không phải %APPDATA%\xdg.config\.wrangler\config\default.toml; lần gặp thật, chỉ đường dẫn thứ nhất còn token hợp lệ.
Cách gỡ: kiểm lại đúng đường dẫn này trước khi nghi ngờ quyền của token.
Bước tiếp theo
Đã biết cách gắn tên miền, sang bước kế tiếp: tạo hộp thư theo chính tên miền của bạn (kiểu lienhe@tenmiencuaban.vn) để gửi và nhận thư đúng thương hiệu.
Sang bước 7: Hộp thư tên miền riêng →