Chắc hẳn nhiều người đã từng nghe đến Really Simple SSL như một giải pháp thần thánh cho vấn đề Mixed Content. Tuy nhiên, sau một thời gian sử dụng, tôi đã gỡ bỏ plugin này vì nó quá thừa cho một vấn đề nhỏ, thậm chí nó còn làm chậm website.
Nếu bạn chưa biết thì Really Simple SSL là một plugin WordPress giúp chuyển hướng các link đang chạy trên giao thức HTTP sang HTTPS.
Khi website của bạn đã cài đặt SSL và sử dụng giao thức HTTPS, nhưng lại chứa một số liên kết hoặc tài nguyên (như hình ảnh, script) chạy trên HTTP, trình duyệt sẽ hiển thị cảnh báo lỗi bảo mật trên thanh địa chỉ. Lỗi này được gọi là Mixed Content.
Về cơ bản, các hệ thống hosting hiện đại đều hỗ trợ website chạy trên cả hai giao thức HTTP và HTTPS, nên dù bạn truy cập bằng giao thức nào, trang web vẫn hoạt động bình thường. Khi bạn vào web qua HTTPS, trình duyệt sẽ kiểm tra chứng chỉ SSL và các liên kết có trên trang. Nếu không có chứng chỉ SSL hoặc chứng chỉ không hợp lệ, trình duyệt sẽ hiển thị cảnh báo bảo mật, đồng thời cung cấp tùy chọn truy cập nâng cao để bạn vẫn có thể vào trang nếu muốn.
Bài toán thực sự ở đây là đảm bảo tất cả các đường link như ảnh, CSS, JavaScript… đều được thực thi trên HTTPS.
Cách 1. Đồng bộ link thông qua WP CLI
Phương pháp này cho phép bạn nhanh chóng cập nhật tất cả các đường link trong cơ sở dữ liệu WordPress của bạn chỉ với một vài lệnh đơn giản.
Để áp dụng cách này, bạn cần phải đảm bảo đủ hai điều kiện là
- Hosting có hỗ trợ Terminal
- Đã cài đặt WP CLI vào hosting
Nếu hosting của bạn có Terminal, nhưng chưa cài đặt WP CLI thì bạn có thể cài đặt theo hướng dẫn dưới đây:
Bước 1: Truy cập vào Bảng điều khiển hosting > Terminal
Bước 2: Truy cập vào thư mục đang chứa code của web.
Nếu code của bạn nằm trong thư mục public_html, thì bạn nhập lệnh
cd public_html
Bước 3: Chạy lệnh đồng bộ link
Tại bước này, bạn copy lệnh sau và dán vào Terminal
wp search-replace 'old_link' 'new_link' --all-tables
Để bạn dễ hình dung, tôi sẽ đưa ra hai ví dụ dưới đây
Đồng bộ tên miền các link đang chạy HTTP sang HTTPS thành bằng WP CLI
wp search-replace 'http://domain.com' 'https://domain.com' --all-tables
Cách 2. Đồng bộ link bằng lệnh SQL
Sử dụng lệnh SQL để trực tiếp thay đổi tất cả các đường link HTTP thành HTTPS trong cơ sở dữ liệu, giúp tiết kiệm thời gian và công sức.
Đầu tiên hãy truy cập công cụ WordPress SQL Domain Sync Generator
Tại đây, bạn hãy nhận vào link web đang chạy ở trạng thái HTTP (Tức http://domain.com), HTTPS (Tức https://domain.com) và prefix của Database. Sau đó nhấn nút Generate.
Trông nó sẽ giống như thế này.

Kết quả bạn sẽ có các lệnh SQL như dưới đây.
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://domain.com', 'https://domain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://domain.com', 'https://domain.com');
UPDATE wp_posts SET post_excerpt = REPLACE (post_excerpt, 'http://domain.com', 'https://domain.com');
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://domain.com','https://domain.com');
UPDATE wp_termmeta SET meta_value = REPLACE (meta_value, 'http://domain.com','https://domain.com');
UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://domain.com', 'https://domain.com');
UPDATE wp_comments SET comment_author_url = REPLACE (comment_author_url, 'http://domain.com','https://domain.com');
UPDATE wp_posts SET guid = REPLACE (guid, 'http://domain.com', 'https://domain.com') WHERE post_type = 'attachment';
Tiếp theo hãy truy cập vào PHPMyadmin > Click vào tên Database > SQL > Dán các lệnh SQL mà bạn đã copy ở trên vào mục SQL > nhấn vào nút Go (Thực thi).

Tổng kết
Không giống với plugin Really Simple SSL, hai cách mà tôi đã giới thiệu sẽ thay đổi link trực tiếp trong cơ sở dữ liệu. Nên hãy đảm bảo bạn đã sao lưu dữ liệu trước khi thực hiện.
Nếu bạn có cách xử lý tối ưu hơn, hãy chia sẻ cho tôi ở dưới nhé.