1. Tổng quan
Khi vận hành website, đôi khi chúng ta cần thay đổi tên miền cũ sang một tên miền mới. Ví dụ, mình có domain https://wiki.hoanghd.com/
và giờ muốn chuyển toàn bộ truy cập sang domain mới https://sysnote.com/
.
Điều quan trọng là giữ nguyên đường dẫn khi chuyển hướng, ví dụ:
- Truy cập
https://wiki.hoanghd.com/abc
→ tự động chuyển sanghttps://sysnote.com/abc
- Truy cập
https://wiki.hoanghd.com/site
→ tự động chuyển sanghttps://sysnote.com/site
Trong bài viết này, mình sẽ hướng dẫn chi tiết cách thực hiện việc này đúng kỹ thuật, đảm bảo tối ưu cho SEO và trải nghiệm người dùng.
2. Vì sao cần cài SSL cho domain cũ?
Nhiều bạn thắc mắc: “Website cũ chỉ chuyển hướng thôi, có cần SSL (https) không?”.
Câu trả lời là CÓ.
- Khi người dùng gõ
https://wiki.hoanghd.com
, trình duyệt luôn kiểm tra chứng chỉ SSL trước khi thực hiện bất kỳ hành động nào, kể cả chuyển hướng (redirect). - Nếu domain
wiki.hoanghd.com
không có SSL hợp lệ, trình duyệt sẽ hiện cảnh báo bảo mật và có người dùng sẽ không thể truy cập hoặc tự động chuyển hướng được.
✅ Vì vậy, bạn vẫn cần SSL cho wiki.hoanghd.com
, dù website chỉ dùng để chuyển hướng.
3. Các phương pháp cấp SSL cho domain cũ
Bạn có 3 lựa chọn:
Phương pháp | Ghi chú |
---|---|
Let’s Encrypt (Miễn phí) | Phổ biến, tự động gia hạn, phù hợp hầu hết nhu cầu. |
Cloudflare SSL | Nếu domain dùng Cloudflare, có thể kích hoạt SSL Flexible hoặc Full miễn phí. |
SSL thương mại (trả phí) | Không cần thiết nếu chỉ redirect, nhưng dùng được nếu yêu cầu bảo mật cao. |
👉 Khuyến khích: Dùng Let’s Encrypt để tiết kiệm chi phí và đơn giản quản lý.
4. Cách thiết lập chuyển hướng 301 chuẩn SEO
Sau khi domain cũ đã có SSL hợp lệ, ta sẽ thiết lập redirect 301.
Redirect 301 giúp:
- Báo cho Google biết nội dung đã chuyển vĩnh viễn.
- Giữ nguyên SEO đã xây dựng trước đó.
- Trải nghiệm người dùng mượt mà (trình duyệt tự động chuyển).
Nếu bạn dùng Nginx:
Bạn chỉnh file config server
cho domain cũ (wiki.hoanghd.com
) như sau:
server {
listen 80;
listen 443 ssl;
server_name wiki.hoanghd.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
return 301 https://sysnote.com$request_uri;
}
}
Giải thích:
301
là mã trạng thái chuyển hướng vĩnh viễn.$request_uri
giữ nguyên phần đường dẫn (/abc
,/site
,…) khi chuyển sang domain mới.
Sau đó reload Nginx để áp dụng:
sudo nginx -t
sudo systemctl reload nginx
Nếu bạn dùng Apache:
Bạn thêm vào file .htaccess
ở thư mục gốc domain cũ:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^wiki\.hoanghd\.com$ [NC]
RewriteRule ^(.*)$ https://sysnote.com/$1 [R=301,L]
Giải thích:
^(.*)$
lấy toàn bộ đường dẫn phía sau domain.$1
giữ nguyên đường dẫn khi chuyển sangsysnote.com
.
Nhớ đảm bảo module mod_rewrite
đã được bật:
sudo a2enmod rewrite
sudo systemctl restart apache2
Nếu bạn dùng Cloudflare:
Nếu domain wiki.hoanghd.com
đang chạy qua Cloudflare, bạn có thể thiết lập chuyển hướng trực tiếp trong Dashboard mà không cần can thiệp server.
Các bước:
- Vào Rules > Page Rules.
- Bấm Create Page Rule.
- Cấu hình:
- URL pattern:
https://wiki.hoanghd.com/*
- Action:
Forwarding URL (301 Permanent Redirect)
- Destination URL:
https://sysnote.com/$1
- URL pattern:
- Lưu lại và kích hoạt.
5. Kiểm tra lại sau khi thiết lập
Sau khi hoàn tất, bạn nên kiểm tra bằng:
- Trình duyệt (ở chế độ ẩn danh)
- Công cụ dòng lệnh:
curl -I https://wiki.hoanghd.com/test
Kết quả mong muốn:
HTTP/1.1 301 Moved Permanently
Location: https://sysnote.com/test
✅ Nếu thấy phản hồi như vậy nghĩa là chuyển hướng đã hoạt động chính xác!
Một ví dụ thực tế chuyển hướng từ https://www.aicsc.com.vn sang https://.aicsc.vn.
server {
listen 443 ssl;
server_name www.aicsc.com.vn;
ssl_certificate /etc/nginx/ssl/www_aicsc_com_vn_cert.pem;
ssl_certificate_key /etc/nginx/ssl/www_aicsc_com_vn_cert.key;
return 301 https://aicsc.vn$request_uri;
}
server {
listen 80;
server_name www.aicsc.com.vn;
return 301 https://aicsc.vn$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/aicsc.crt;
ssl_certificate_key /etc/nginx/ssl/aicsc.key;
listen 80;
server_name aicsc.vn;
proxy_redirect off;
error_log /var/log/nginx/aicsc.vn.error.log;
access_log /var/log/nginx/aicsc.vn.access.log;
client_header_buffer_size 512000k;
client_body_buffer_size 12800k;
large_client_header_buffers 16 512000k;
location / {
proxy_pass http://192.168.100.253:1647;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering on;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
proxy_hide_header Upgrade;
proxy_hide_header X-Powered-By;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cache-Control "no-transform" always;
add_header Referrer-Policy no-referrer always;
add_header X-Robots-Tag none;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Content-Security-Policy upgrade-insecure-requests;
proxy_next_upstream error timeout invalid_header http_500 http_502;
proxy_next_upstream_tries 2;
client_max_body_size 8192m;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
6. Kết luận
Việc chuyển domain một cách bài bản không chỉ giúp tránh mất traffic, mà còn bảo toàn công sức SEO đã đầu tư trước đó.
Tóm lại, khi muốn chuyển domain:
- Luôn cần SSL hợp lệ cho domain cũ.
- Thiết lập redirect 301 đúng cách để giữ nguyên đường dẫn.
- Kiểm tra kỹ lưỡng sau khi cấu hình.
Hy vọng bài chia sẻ này sẽ giúp bạn thực hiện việc chuyển đổi domain mượt mà và hiệu quả nhất!