Hướng dẫn chuyển từ HTTP sang HTTPS không bị mất thứ hạng tìm kiếm trên Google.

Dạo gần đây, phong trào chuyển từ HTTP sang HTTPS diễn ra rất rầm rộ. Khá nhiều bạn có liên hệ hỏi tôi về việc chuyển sang HTTPS có bị mất thứ hạng trên Google hay không và chuyển như thế nào thì không bị mất thứ hạng. Thực ra, việc chuyển từ HTTP sang HTTPS không làm giảm thứ hạng tìm kiếm của bạn mà thậm chí còn tăng nếu bạn làm đúng cách. Bởi vì Google đã công bố họ sẽ ưu tiên các blog/ website sử dụng giao thức HTTPS rồi mà. Và để giải đáp thắc mắc của tất cả mọi người, hôm nay tôi sẽ hướng dẫn cho các bạn những bước cơ bản để chuyển sang sử dụng HTTPS đối với blog/ website WordPress một cách chuẩn nhất.
Tham khảo thêm:
- Chrome cảnh báo không an toàn đối với website sử dụng HTTP
- Sửa lỗi SSL trong WordPress một cách đơn giản
Chuyển từ HTTP sang HTTPS mà không bị mất thứ hạng SEO
1. Cài SSL trên hosting hoặc VPS. Các bạn có thể sử dụng SSL miễn phí như Let’s Encrypt hoặc mua các loại SSL trả phí như Positive SSL.
Tham khảo thêm:
- Hướng dẫn cài Positive SSL trên hosting có cPanel
- Hướng dẫn cài SSL miễn phí với AutoSSL trên cPanel
Sau khi cài thành công SSL lên host, có 2 cách khác nhau để cài HTTPS cho WordPress:
Phương pháp thủ công
Phức tạp và không dành cho những người không am hiểu về kỹ thuật, dễ bị lỗi trong quá trình thay thế dữ liệu trong database, do đó chúng tôi không khuyên dùng.
Lưu ý:
- Hướng dẫn này chỉ dành cho website sử dụng mã nguồn WordPress chạy trên nền web server Apache hoặc LiteSpeed (hỗ trợ file
.htaccess). - Hãy backup kỹ càng trước khi làm để tránh các trường hợp đáng tiếc có thể xảy ra.
2. Export database của blog/ website WordPress về máy tính thông qua phpMyAdmin. Sử dụng phần mềm NotedPad++ để mở file ra, tìm kiếm và thay thế toàn bộ link từ HTTP sang HTTPS. Drop (xóa) toàn bộ các table của database cũ trên phpMyAdmin sau đó import file (.sql) đã chỉnh sửa lên. Các bạn cũng có thể làm việc này thông qua các queries trên phpMyAdmin.
Lưu ý: bước này có thể làm mất một số thiết lập của plugin Yoast SEO cũng như các widget. Vì vậy, các bạn nên copy các thiết lập và lưu ở đâu đó trước khi làm để sau này tiện cấu hình lại.
3. Thêm đoạn code sau đây vào đầu file .htaccess trong thư mục gốc của WordPress.
# Redirect all links from HTTP to HTTPS
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
Tác dụng của đoạn code này là tự động redirect 301 toàn hộ link HTTP sang HTTPS.
Sử dụng plugin Really Simple SSL
Với bước 2 và 3 của phương pháp thủ công, các bạn có thể thực hiện đơn giản hơn bằng cách sử dụng plugin Really Simple SSL. Xem hướng dẫn chi tiết trong bài viết “Cài HTTPS cho WordPress trong nháy mắt với Really Simple SSL“. Phương pháp này an toàn gần như tuyệt đối, bạn không cần phải backup dữ liệu, được chúng tôi khuyên dùng.
4. Truy cập vào tài khoản Google Search Console (hay còn gọi là Google Webmaster Tools) của bạn, khai báo thêm một tên miền dạng HTTPS. Nhớ giữ nguyên tên miền dạng HTTP trước đó nhé. Đừng quên làm đầy đủ các thao tác giống như bạn đã làm với tên miền HTTP (chẳng hạn như thêm sitemaps, khai báo robots.txt, nhắm mục tiêu quốc tế…).

5. Truy cập vào tài khoản Google Analytics (nếu bạn có sử dụng) => Quản trị => Cài đặt thuộc tính => URL mặc định và chuyển nó về dạng HTTPS.

Kéo xuống dưới cùng, click vào nút Điều chỉnh Search Console.

Click tiếp vào nút Chỉnh sửa.

Chọn đúng trang web có link dạng HTTPS để liên kết với tài khoản Google Analytics. Click vào nút Lưu để hoàn tất.

Tất cả chỉ đơn giản vậy thôi. Việc còn lại là chờ đợi Google bots thu thập dữ liệu và tự động chuyển hết link từ HTTP sang HTTPS trên bảng kết quả tìm kiếm. Chúc các bạn thành công!
Mọi thắc mắc liên quan đến việc chuyển từ HTTP sang HTTPS cho blog/ website WordPress, xin vui lòng gửi vào khung bình luận bên dưới để được giải đáp.
Nếu bạn thích bài viết này, hãy subscribe blog của tôi để thường xuyên cập nhật những bài viết hay nhất, mới nhất qua email nhé. Cảm ơn rất nhiều. :)





anh Hiếu cho em hỏi, em cài ReallySimple xong, tích vào Enable 301 .htaccess redirect thì vào .htacess thấy
Em không rõ cái đoạn code phía trên cùng ở đâu ra mà có, liệu có trùng lặp không và có cần xóa nó đi không ạ ?
Và nó có mấy dòng khác với code của anh.
Đã dùng Really Simple SSL thì xóa code bên trên đi nhé. 2 cái có tác dụng như nhau. Cái code kia nó khác code của mình là do tính năng Let’s Encrypt của host nó tự thêm vào.
vâng ạ, vậy em cài Let’s Encrypt từ host thì xóa code đó đi vẫn được đúng k anh ?
cảm ơn anh
Xóa đi nhé. Nhưng mà lần sau gia hạn Let’s Encrypt thì nó lại tự động modify cái đoạn code của Really Simple SSL thôi. =))
cảm ơn blog của bro nhiều lắm
xin hướng dẫn chuyển http sang https , từ host direct admin, ssl bảo mật bên mình đã mua rồi, không biết phải vào đâu để chuyển và làm sao kiểm tra biết được web mình đã chuyển qua https
xin cám ơn
Hồi trước mình có viết 1 bài hướng dẫn cài SSL trên DirectAdmin mà giờ không biết xóa mất đâu rồi. Tốt nhất bạn liên hệ nhờ nhà cung cấp hosting cài giúp cho nhanh. :P
Cảm ơn Hiếu vì bài viết. Mình đã cài ssl cho Web rồi nhưng vẫn bị lỗi như thế này có sao không? Có cách khắc phục không? Cảm ơn bạn.
error Really Simple SSL has received no response from the webpage. See our knowledge base for instructions on how to fix this warning
Bài viết rất hữu ích cảm ơn anh !
Sao em dùng lệnh redirect của anh thì nó chỉ chuyển hướng mỗi trang chủ thôi vậy ạ
Nếu các url khác nếu cố tình gõ http thì nó sẽ ra là http chứ k chuyển sang https
Website của em là azcctv.vn
Hướng dẫn của mình là redirect tất cả các link. Nếu bạn chèn vào mà nó redirect mỗi trang chủ thì chứng tỏ bị xung đột hay lỗi ở đâu rồi.
Tệp httacess của em đây anh
A kiểm tra giúp em với ạ
RewriteEngine OnRewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^sitemap.xml$ sitemap.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Redirect all links from HTTP to HTTPS
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
CacheLookup public on
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 1 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year"
# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 month"
# Javascript
ExpiresByType application/javascript "access plus 1 month"
Bạn thử chuyển đoạn code redirect HTTPS lên trên cùng rồi reset đoạn code permalink của WordPress về mặc định xem sao.
Web em xài code thuần a ạ
Code của bạn nó như thế này:
RewriteEngine OnRewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^sitemap.xml$ sitemap.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Trong khi đó code mặc định của WordPress nó như thế này:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
RewriteRule ^sitemap.xml$ sitemap.php [L]
Cái đoạn này có nghĩa là gì anh?
Cái này hình như là code rewrite PHP sitemap (sitemap.php) thành XML sitemap (sitemap.xml) thì phải?
E xóa cái đoạn này với file sitemap.php rồi up lại sitemap.xml mới có sao ko a nhĩ
Mình cũng không rõ. Trước giờ chỉ biết XML sitemap chứ chưa thấy PHP sitemap bao giờ. :P
@Trung Hiếu ơi cho hỏi tý nhiều trang bị google nó phạt tên miền .com xong nó chuyển sang .net làm sao mà vẫn giữ được thứ hạng từ khóa vậy ạ? Bên lề tý xíu và cảm ơn trước nhé!
Nếu không muốn mất thứ hạng thì phải redirect 301 và thông báo việc thay đổi tên miền cho Google. Nhưng nếu như thế thì mình sợ Google sẽ phạt luôn tên miền mới. Mình chưa thử làm bao giờ nên cũng không chắc chắn lắm. :P
Mình thấy nhiều trang lớn không thay đổi mà giữ nguyên. Không biết sau này nó bỏ hẳn luôn thì sao nữa >.<
Dữ liệu của họ nhiều nên lười chưa đổi thôi. Trước sau gì cũng phải đổi, khi các trình duyệt web không còn hỗ trợ HTTP nữa.
Cảm ơn bạn :3 Nhờ bạn mà mình chuyển qua https được rồi sáng giờ mò mãi
Tuyệt quá, nhờ bài viết này em đã giải quyết được vấn đề trong hôm nay. Cảm ơn anh lần nữa
Chào anh,
Sao em vào mục “Search Console” thì không thấy nút edit, mà chỉ có nút “delete”?
Vậy em phải làm sao?
Ý bạn là bước 5 ấy à? Bạn xóa đi rồi thêm lại cái khác.
Cái này có thực sự ảnh hưởng đến traffic không nhỉ?
Thấy nhiều trang lớn vẫn để nguyên.
Trang lớn vẫn để nguyên có thể là do họ lười thay đổi (quá nhiều dữ liệu) thay đổi sẽ rất phức tạp và mất thời gian. Nhưng trước sau gì cũng phải chuyển qua HTTPS cả thôi. Đến một lúc nào đó các trình duyệt web sẽ ngừng hỗ trợ HTTP.