Một trong những vấn đề phổ biến mà nhiều người dùng WordPress gặp phải là lỗi mixed content. Lỗi này xảy ra khi một trang web được bảo mật bằng HTTPS nhưng lại chứa các tài nguyên không bảo mật từ HTTP, dẫn đến việc trình duyệt cảnh báo người dùng về nội dung không an toàn. Điều này không chỉ ảnh hưởng đến trải nghiệm người dùng mà còn có thể gây hại cho SEO của trang web. Bài viết hôm nay sẽ hướng dẫn bạn cách sửa lỗi mixed content trong WordPress đơn giản.
Lỗi mixed content trong WordPress là gì?
Lỗi mixed content trong WordPress xảy ra khi một trang web được bảo mật bằng giao thức HTTPS nhưng lại chứa các tài nguyên (như hình ảnh, script, hoặc stylesheet) được tải từ giao thức HTTP không bảo mật. Điều này dẫn đến việc trình duyệt cảnh báo người dùng rằng trang web không hoàn toàn an toàn. Lỗi này thường xuất hiện khi người dùng chuyển đổi từ HTTP sang HTTPS mà không cập nhật tất cả các liên kết đến tài nguyên trên trang.
Mặc dù lỗi mixed content không ảnh hưởng trực tiếp đến chức năng của trang web, nhưng có thể gây ra những tác động tiêu cực đến SEO và trải nghiệm người dùng. Các trình duyệt hiện đại như Chrome đã bắt đầu đánh dấu các trang web sử dụng HTTP là không bảo mật, điều này có thể làm giảm độ tin cậy của trang web trong mắt người dùng. Do đó, việc khắc phục lỗi này là rất quan trọng để đảm bảo rằng trang web của bạn không chỉ an toàn mà còn được tối ưu hóa cho các công cụ tìm kiếm.
Một số nguyên nhân gây ra lỗi mixed content trong WordPress
Chuyển đổi từ HTTP sang HTTPS không hoàn chỉnh
Khi quản trị viên thực hiện chuyển đổi trang web từ HTTP sang HTTPS nhưng chưa cập nhật toàn bộ đường dẫn, một số liên kết cũ vẫn giữ nguyên giao thức HTTP. Ví dụ:
- Các liên kết nội bộ trong bài viết hoặc trang.
- Hình ảnh hoặc video nhúng sử dụng URL HTTP.
- Nếu không thay thế tất cả các liên kết này, trình duyệt sẽ cảnh báo về nội dung hỗn hợp (mixed content).
Cấu hình sai trong cơ sở dữ liệu hoặc tệp theme/plugin
Cơ sở dữ liệu: Trong WordPress, nhiều thông tin liên quan đến nội dung, URL hình ảnh, và liên kết được lưu trong cơ sở dữ liệu. Nếu các bản ghi này chưa được cập nhật sang HTTPS, lỗi Mixed Content sẽ xảy ra.
Theme và plugin: Một số theme hoặc plugin không được thiết kế để hỗ trợ HTTPS. Các tài nguyên như tệp CSS hoặc JavaScript vẫn được gọi qua HTTP, gây ra xung đột giao thức.
Sử dụng liên kết từ nguồn bên ngoài không hỗ trợ HTTPS
Trang web có thể nhúng hình ảnh, phông chữ, hoặc tài nguyên từ các bên thứ ba. Nếu các trang nguồn không cung cấp tài nguyên qua HTTPS, chúng sẽ được tải qua HTTP, gây ra lỗi. Ví dụ:
- Nhúng hình ảnh từ một trang web không có chứng chỉ SSL.
- Tích hợp API hoặc các script từ bên ngoài nhưng không hỗ trợ HTTPS.
Thiếu thiết lập chính xác trong tệp cấu hình WordPress
WordPress yêu cầu khai báo đúng giao thức HTTPS trong các tệp cài đặt như wp-config.php. Nếu chưa chỉnh sửa các thông số sau, lỗi Mixed Content có thể xuất hiện:
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');
Nếu các giá trị này vẫn dùng HTTP, trang web sẽ gặp lỗi khi truy cập các tài nguyên.
Bộ nhớ đệm (Cache) hoặc CDN chưa cập nhật HTTPS
Nếu trang web sử dụng bộ nhớ đệm hoặc CDN (Content Delivery Network), việc không cập nhật các tài nguyên được lưu trữ sang HTTPS có thể gây lỗi. Bộ nhớ đệm cũ vẫn chứa các đường dẫn HTTP, mặc dù trang web đã được chuyển sang HTTPS.
Nhập dữ liệu từ bản sao cũ hoặc các trình nhập liệu không tối ưu
Khi nhập dữ liệu (import) từ bản sao cũ sử dụng giao thức HTTP, các liên kết và hình ảnh trong nội dung sẽ vẫn giữ nguyên giao thức cũ. Điều này phổ biến khi quản trị viên di chuyển website hoặc khôi phục từ bản sao lưu không chuẩn hóa HTTPS.
Trình chỉnh sửa thủ công gây lỗi
Một số người quản trị có thể chỉnh sửa mã HTML hoặc CSS trực tiếp trong WordPress và vô tình để lại liên kết HTTP. Điều này có thể xuất hiện trong:
- Custom CSS được thêm vào trong theme hoặc plugin.
- Code snippets hoặc script thủ công được nhúng trong các widget hoặc trang.
Hướng dẫn cách sửa lỗi mixed content trong WordPress
Cách xác định lỗi mixed content trong WordPress
Cách dễ nhất để phát hiện lỗi mixed content trong WordPress là nhìn vào thanh địa chỉ trang web của trình duyệt.
Tùy thuộc vào trình duyệt của bạn, cảnh báo Not secure hoặc biểu tượng ổ khóa bị hỏng có thể xuất hiện bên cạnh URL trang web với thông báo “Your connection to this site is not fully secure.“
Khi sử dụng Developer tools, bạn có thể xác định nội dung nào đang tải bằng kết nối HTTP. Để thực hiện, hãy nhấp vào biểu tượng ba dấu chấm dọc trên thanh menu trên cùng của Chrome -> chọn Thêm công cụ -> Công cụ dành cho nhà phát triển. Ngoài ra, bạn cũng có thể nhấn Ctrl + Shift + I cho Windows/Linux hoặc Cmd + Option + I cho macOS.
Một số cách sửa lỗi mixed content
Sửa lỗi bằng cách sử dụng plugin HTTPS/SSL
Nếu được quyền truy cập bảng điều khiển quản trị WordPress, bạn có thể cài đặt plugin HTTPS/SSL để sửa cảnh báo mixed content. Nhiều plugin cung cấp phiên bản miễn phí có các tính năng giải quyết các sự cố nội dung không an toàn chỉ bằng vài cú nhấp chuột.
Trong bài viết này, TinoHost sẽ sử dụng plugin SSL Insecure Content Fixer.
Bước 1: Cài đặt và kích hoạt plugin SSL Insecure Content Fixer từ kho plugin WordPress.
Bước 2: Sau khi kích hoạt plugin, bạn điều hướng đến Settings -> SSL Insecure Content từ bảng điều khiển quản trị của bạn để cấu hình plugin.
Bước 3: Bạn sẽ cấu hình plugin như sau:
- Trường Fix insecure content cho phép bạn xác định mức độ sửa lỗi mà plugin sẽ áp dụng. Tùy chọn Simple tập trung vào các tập lệnh, bảng định kiểu và tệp đa phương tiện, giúp giảm thiểu tác động đến hiệu suất trang web. Bạn hãy bắt đầu tại đây và tăng cấp nếu cần cho đến khi cảnh báo được giải quyết.
- Trường HTTPS detection quyết định cách trang WordPress của bạn xác định các trang HTTPS. Bạn có thể đặt standard WordPress function hoặc chọn tùy chọn khác bên dưới nếu đang sử dụng reverse proxy như NGINX hoặc Cloudflare CDN.
Bước 4: Giữ nguyên các thiết lập khác và nhấp vào Save Changes để áp dụng.
Sau đó, truy cập trang WordPress của bạn để kiểm tra xem lỗi mixed content đã được giải quyết hay chưa.
Sửa lỗi bằng cách cập nhật liên kết
Nếu plugin HTTPS/SSL không giải quyết được vấn đề, một số URL có thể đã được mã hóa cứng trong cơ sở dữ liệu hoặc tệp WordPress của bạn. Trong trường hợp này, bạn cần thay thế tất cả các URL bằng HTTPS.
Nếu chỉ có một vài liên kết không an toàn, hãy xóa chúng theo cách thủ công. Nếu có nhiều liên kết, bạn có thể sử dụng plugin tìm kiếm và thay thế để cập nhật tất cả các liên kết không an toàn trong bảng cơ sở dữ liệu của bạn.
Thực hiện các bước sau để cập nhật hàng loạt liên kết trong cơ sở dữ liệu WordPress của bạn bằng cách sử dụng plugin Better Search Replace:
Bước 1: Cài đặt và kích hoạt plugin Better Search Replace từ thư viện plugin WordPress.
Bước 2: Sau khi kích hoạt plugin, bạn điều hướng đến Tools -> chọn Better Search Replace.
Bước 3: Điền địa chỉ trang web HTTP của bạn vào trường ô Search for và thêm phiên bản HTTPS vào ô Replace with.
Mục Select tables xác định bảng nào cần cập nhật. Bạn hãy nhấn Ctrl và nhấp vào từng mục để chọn tất cả các bảng.
Để nguyên các thiết lập bổ sung. Biểu mẫu sẽ trông như thế này:
Bước 4: Nhấp vào Run Search/Replace để bắt đầu quá trình cập nhật. Vì chế độ chạy thử đang bật, plugin sẽ chỉ hiển thị các phát hiện tự động. Bạn hãy xác minh rằng chúng thực sự là URL HTTP.
Sau đó, tắt chế độ chạy thử rồi chạy lại quy trình tìm kiếm và thay thế.
Sửa lỗi thông qua tệp .htaccess
Phương pháp cuối cùng để giải quyết cảnh báo mixed content trong WordPress là buộc kết nối HTTPS an toàn thông qua tệp .htaccess.
Tệp này cấu hình nhiều chức năng khác nhau cho các trang web được lưu trữ trên nhiều máy chủ web, bao gồm cả Apache. Một chức năng chính là buộc WordPress chuyển hướng khách truy cập từ các kết nối HTTP không an toàn sang HTTPS.
Bạn có thể tìm hoặc tạo tệp .htaccess trong thư mục gốc của trang web (thường là public_html) nơi chứa tất cả các tệp cốt lõi của WordPress.
Nhấp chuột phải vào tệp và chọn Edit. Sau đó, dán đoạn mã sau vào cuối tệp.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"
Nhấp vào Save và tải lại trang WordPress của bạn để kiểm tra xem lỗi đã được giải quyết hay chưa.
Kết luận
Việc khắc phục lỗi mixed content trong WordPress không chỉ giúp bảo vệ trang web của bạn mà còn nâng cao trải nghiệm người dùng và cải thiện thứ hạng SEO. Qua bài viết này, chúng ta đã tìm hiểu các phương pháp hiệu quả để xử lý vấn đề này, từ việc kiểm tra và cập nhật các liên kết đến việc sử dụng các plugin hỗ trợ.
Những câu hỏi thường gặp
CDN có thể gây ra lỗi Mixed Content không?
Có. Nếu CDN chưa được cấu hình để hỗ trợ HTTPS hoặc bộ nhớ đệm của CDN vẫn chứa các tài nguyên HTTP cũ, lỗi Mixed Content sẽ xảy ra. Bạn cần:
Xóa bộ nhớ đệm của CDN và đồng bộ lại tài nguyên với giao thức HTTPS.
Đảm bảo CDN của bạn hỗ trợ HTTPS.
Nếu đã sử dụng plugin HTTPS/SSL nhưng vẫn gặp lỗi mixed content, tôi nên làm gì?
Nếu lỗi vẫn tiếp diễn sau khi sử dụng plugin, bạn có thể cần kiểm tra lại cài đặt của plugin và điều chỉnh các mức sửa lỗi. Đôi khi, việc cấu hình không đúng có thể dẫn đến việc không khắc phục được lỗi
Lỗi Mixed Content ảnh hưởng như thế nào đến SEO?
Google đánh giá cao các trang web an toàn sử dụng HTTPS. Nếu trang của bạn gặp lỗi Mixed Content, nó có thể bị trình duyệt đánh dấu là không an toàn, dẫn đến giảm thứ hạng SEO và ảnh hưởng đến trải nghiệm người dùng.
Làm sao để ngăn chặn lỗi Mixed Content xảy ra trong tương lai?
- Đảm bảo tất cả tài nguyên (hình ảnh, video, script) được tải qua HTTPS ngay từ đầu.
- Sử dụng các plugin hoặc công cụ kiểm tra thường xuyên để phát hiện lỗi Mixed Content sớm.
- Kiểm tra và cập nhật các theme, plugin để đảm bảo chúng tương thích với HTTPS.
- Sau khi thêm nội dung mới, hãy kiểm tra lại xem có liên kết HTTP nào vô tình bị nhúng vào trang không.