TRƯƠNG MINH KIÊN · HỆ THỐNG TRIỂN KHAI AI
← Về truongminhkien.vn
Bước 6 / 20 · Phần 1 — Cài nền

Tên miền về Cloudflare

Cloudflare là nơi bạn gắn tên miền vào các trang web tĩnh miễn phí (Cloudflare Pages) và chuyển hướng tên miền cũ về tên miền chính. Trang này nói thật cả 3 cách làm, kể cả cách chúng tôi đã tính rồi quyết định không dùng.

Yêu cầu trước khi bắt đầu

Chọn đúng 1 trong 3 cách trước khi làm

Cách A — Gắn tên miền phụ vào Cloudflare Pages, giữ DNS ở nơi bạn đã mua tên miền.

Đâ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.

Cách B — Chuyển hướng tên miền cũ về tên miền chính bằng Redirect Rules.

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.

Cách C — Đổi nameserver để Cloudflare quản lý toàn bộ DNS.

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

1

Đư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.

2

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ó.

3

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).

4

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

1

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).

2

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-cuhttps://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.

3

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.

4

Test bằng tab mới hoặc thêm tham số né cache

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.

Câu lệnh — dán vào Claude AI

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.