Cloudflare Redirect Rules: gom nhiều domain về một domain chính không cần code
Bạn có `brand.com`, `brand.vn`, `brand.net` và muốn tất cả đều trỏ về `brand.com`? Cloudflare Redirect Rules làm được điều đó hoàn toàn free, không cần server, không cần code - chỉ cần DNS record đặc biệt và một redirect rule là xong. Bài này hướng dẫn từng bước cho cả single domain lẫn multi-domain. ---
Vấn đề
Khi quản lý brand hoặc sản phẩm, thường có nhiều domain mua để bảo vệ thương hiệu: .com, .vn, .net, .io, hay các typo domain. Vấn đề là phải làm sao để tất cả các domain đó đều redirect về domain chính một cách sạch sẽ - giữ nguyên path, query string - và không mất SEO.
Cách làm cũ: setup một server nginx/Apache chỉ để làm redirect. Tốn tài nguyên, tốn thời gian maintain. Cách hiện đại hơn: dùng Cloudflare Redirect Rules - xử lý hoàn toàn ở edge, không cần origin server, miễn phí.
Page Rules vs Redirect Rules: Cloudflare đang dần deprecated Page Rules và khuyến nghị dùng Redirect Rules (Single Redirects) thay thế. Redirect Rules mạnh hơn, hỗ trợ wildcard, dynamic expression, và không bị giới hạn 3 rules/domain như Page Rules free.
Giải thích: cơ chế hoạt động
Với domain alias (domain chỉ để redirect, không có server thật), flow như sau:
Visitor → domain alias (brand.vn)
→ Cloudflare edge (xử lý redirect rule)
→ 301 Redirect → domain chính (brand.com)
→ Origin server
Cloudflare cần một DNS record có Proxy: ON để intercept traffic và xử lý redirect rule. Nhưng domain alias không có server thật - vậy dùng IP nào?
Cloudflare cung cấp hai placeholder address đặc biệt:
192.0.2.1- địa chỉ IP reserved (RFC 5737), không route ra internet100::- IPv6 tương đương
Traffic đến địa chỉ này sẽ được Cloudflare "bắt" và áp dụng rules trước khi cần forward đến origin.
Hướng dẫn: redirect một domain alias về domain chính
Bước 1: Thêm domain alias vào Cloudflare
Làm theo hướng dẫn trong bài Cài đặt Cloudflare cho nhiều domain. Đảm bảo domain đã ở trạng thái Active.
Bước 2: Tạo DNS record placeholder
Vào DNS → Records của domain alias, thêm 2 record:
| Type | Name | Content | Proxy |
|---|---|---|---|
| A | @ (root) |
192.0.2.1 |
Proxied (cam) |
| A | www |
192.0.2.1 |
Proxied (cam) |
Tại sao cần cả
www? Visitor có thể gõwww.brand.vnhoặcbrand.vn- cần cover cả hai.
Bước 3: Tạo Redirect Rule
Vào Rules → Redirect Rules → Create Rule.
Cấu hình rule:
Rule name: Redirect brand.vn to brand.com
When incoming requests match:
Field: Hostname
Operator: equals
Value: brand.vn
OR
Field: Hostname
Operator: equals
Value: www.brand.vn
Then:
Type: Dynamic
URL expression: concat("https://brand.com", http.request.uri.path)
Status code: 301
Preserve query string: ✓ ON
Click Save and Deploy.
Kết quả:
http://brand.vn/products?sort=price→https://brand.com/products?sort=pricehttps://www.brand.vn/about→https://brand.com/about
Hướng dẫn: redirect nhiều domain cùng lúc (bulk)
Nếu có 5–10 domain alias cùng redirect về một đích, tạo một rule duy nhất thay vì nhiều rule riêng lẻ.
Cách dùng toán tử is in
When incoming requests match:
Expression (edit expression):
(http.host in {
"brand.vn"
"www.brand.vn"
"brand.net"
"www.brand.net"
"mybrand.io"
"www.mybrand.io"
})
Then:
Type: Dynamic
URL expression: concat("https://brand.com", http.request.uri.path)
Status code: 301
Preserve query string: ✓ ON
Một rule, cover tất cả domain alias. Khi thêm domain mới, chỉ cần cập nhật danh sách trong rule.
Lưu ý: Mỗi domain alias vẫn cần được thêm vào Cloudflare (tạo zone) và có DNS A record placeholder riêng. Rule chỉ xử lý redirect logic - không bypass yêu cầu DNS.
Hướng dẫn: redirect www về non-www (hoặc ngược lại)
Đây là use case phổ biến nhất: đảm bảo tất cả traffic về brand.com, không phải www.brand.com.
Redirect www → non-www:
When: Hostname equals www.brand.com
Then (Dynamic):
concat("https://brand.com", http.request.uri.path)
Status: 301
Redirect non-www → www:
When: Hostname equals brand.com
Then (Dynamic):
concat("https://www.brand.com", http.request.uri.path)
Status: 301
Chọn một trong hai và nhất quán - search engine penalize nếu cùng content accessible ở cả hai.
Code minh họa: kiểm tra redirect bằng curl
Sau khi setup xong, verify redirect hoạt động đúng:
# Kiểm tra redirect chain
curl -Lv --max-redirs 5 http://brand.vn/some-path?q=test 2>&1 | grep -E "< HTTP|< location|< Location"
# Kết quả mong đợi:
# < HTTP/1.1 301 Moved Permanently
# < location: https://brand.com/some-path?q=test
# < HTTP/2 200
# Kiểm tra nhanh status code
curl -o /dev/null -s -w "%{http_code} → %{redirect_url}\n" http://brand.vn
# Output: 301 → https://brand.com/
So sánh: Page Rules vs Redirect Rules
| Tiêu chí | Page Rules (cũ) | Redirect Rules (mới) |
|---|---|---|
| Giới hạn free | 3 rules/domain | 10 rules/domain |
| Wildcard | * đơn giản |
Regex + dynamic expression |
| Giữ query string | Manual | Built-in option |
| Multi-domain | Phải tạo từng rule | is in operator |
| Trạng thái | Deprecated dần | Khuyến nghị dùng |
Nếu bạn đang dùng Page Rules cũ cho redirect, đây là thời điểm tốt để migrate sang Redirect Rules.
Best practices
1. Dùng 301, không dùng 302. 301 (Permanent) truyền link equity cho SEO. 302 (Temporary) không. Chỉ dùng 302 khi redirect tạm thời có kế hoạch rollback.
2. Redirect về HTTPS. URL expression luôn bắt đầu bằng https:// - đừng redirect về http://.
3. Giữ nguyên path và query string. Dùng http.request.uri.path trong expression để đảm bảo /product/123?ref=email không bị mất sau redirect.
4. Verify sau khi deploy. Dùng curl -Lv hoặc tool như redirectcheck.org để kiểm tra toàn bộ redirect chain.
5. Check Google Search Console. Sau khi redirect, submit sitemap mới và monitor crawl errors trong vài ngày đầu.
Kết
Cloudflare Redirect Rules là cách thanh lịch và miễn phí để quản lý domain alias - không cần server chỉ để làm redirect, không tốn chi phí infrastructure. Mỗi domain alias cần: (1) thêm vào Cloudflare, (2) DNS A record với 192.0.2.1 proxied, (3) một redirect rule.
Bài tiếp theo chúng tôi sẽ đi vào Cloudflare Tunnel - cách expose server nội bộ ra internet mà không cần public IP hay port forwarding. Nếu bạn đang chạy service trên VPS private, homelab, hay môi trường dev cần share với client - đây là giải pháp đáng xem.
Tham khảo
- Cloudflare - Redirect one domain to another
- Cloudflare - URL forwarding with Page Rules
- Cloudflare - Create a redirect rule in the dashboard
- Cloudflare - Redirect examples
- How to create dynamic redirect rules for multiple domains
BKGlobal Tech Team