TL;DR: Danh sách kiểm tra phục hồi nhanh
Nếu bạn cần đưa trang web hoạt động trở lại ngay lập tức, hãy thử các bước sau theo thứ tự:
- Xóa sạch cookie của trang web: Đừng xóa toàn bộ lịch sử. Chỉ cần xóa cookie cho tên miền cụ thể đó và tải lại trang.
- Kiểm tra nút gạt SSL của Cloudflare: Nếu bạn sử dụng Cloudflare, hãy thay đổi cài đặt SSL/TLS từ "Flexible" sang "Full". Cách này khắc phục được khoảng 80% các lỗi vòng lặp chuyển hướng.
- Vô hiệu hóa các plugin: Nếu bạn đang dùng WordPress, hãy đổi tên thư mục
/wp-content/pluginsthành/plugins_oldthông qua FTP để xem trang web có tải được không. - Kiểm tra tệp cấu hình .htaccess hoặc Nginx: Tìm các quy tắc xung đột buộc sử dụng cả HTTP và HTTPS cùng một lúc.
Chính xác thì vòng lặp chuyển hướng là gì?
Hãy coi lỗi này như một trò chơi "đẩy qua đẩy lại" kỹ thuật số. Trình duyệt bị kẹt trong một vòng lặp nơi URL A yêu cầu nó đi đến URL B, nhưng URL B lại chỉ ngược về URL A. Hầu hết các trình duyệt hiện đại, như Chrome, sẽ thử trận đấu "ping-pong" này 20 lần trước khi bỏ cuộc và hiển thị màn hình ERR_TOO_MANY_REDIRECTS để cứu CPU của bạn khỏi bị quá tải.
1. Bẫy "Flexible SSL"
Đây là nguyên nhân hàng đầu gây ra vòng lặp hiện nay. Khi sử dụng một CDN như Cloudflare với cài đặt "Flexible", CDN sẽ giao tiếp với máy chủ của bạn qua giao thức HTTP (Cổng 80) thông thường. Nếu máy chủ của bạn được cấu hình để tự động chuyển hướng tất cả lưu lượng HTTP sang HTTPS, nó sẽ gửi trình duyệt quay lại CDN. CDN, vẫn nghĩ rằng nó nên sử dụng HTTP, lại yêu cầu máy chủ một lần nữa. Vòng lặp này lặp lại mãi mãi.
2. Các chỉ thị máy chủ xung đột nhau
Các tệp cấu hình máy chủ như .htaccess (Apache) or nginx.conf rất mạnh mẽ nhưng cũng dễ gặp lỗi. Chỉ cần một dòng đặt sai vị trí có thể tạo ra xung đột giữa phiên bản có www và không có www, hoặc giữa các giao thức HTTP và HTTPS.
3. Lỗi cấu hình CMS
WordPress lưu trữ URL trang chủ và URL trang web trong cơ sở dữ liệu. Nếu chúng được đặt thành http://example.com nhưng máy chủ của bạn bắt buộc dùng https://, ứng dụng và máy chủ sẽ tranh chấp về việc sử dụng giao thức nào.
Các bước khắc phục từng bước
Cách khắc phục 1: Kiểm tra chuỗi chuyển hướng bằng Curl
Trước khi bạn bắt đầu thay đổi cài đặt, hãy xác minh xem máy chủ thực sự đang làm gì. Bạn không cần trình duyệt cho việc này. Hãy mở terminal và chạy lệnh:
curl -IL https://yourwebsite.com
Quan sát kết quả đầu ra. Nếu bạn thấy một danh sách dài các phản hồi HTTP/1.1 301 Moved Permanently theo sau là cùng một URL lặp đi lặp lại, bạn đã xác nhận được vòng lặp nằm ở phía máy chủ, không phải do máy cục bộ của bạn.
Cách khắc phục 2: Đồng bộ hóa Cloudflare và máy chủ gốc của bạn
Nếu bạn sử dụng Cloudflare, việc khắc phục thường chỉ bằng một cú nhấp chuột:
- Đăng nhập vào bảng điều khiển Cloudflare.
- Điều hướng đến SSL/TLS > Overview.
- Chuyển chế độ mã hóa sang Full hoặc Full (Strict).
Điều này yêu cầu Cloudflare giao tiếp với máy chủ của bạn qua HTTPS (Cổng 443). Chỉ cần đảm bảo bạn đã cài đặt chứng chỉ SSL trên máy chủ gốc—ngay cả chứng chỉ Let's Encrypt miễn phí hoặc chứng chỉ tự ký cũng sẽ hoạt động.
Cách khắc phục 3: Dọn dẹp cấu hình Nginx
Kiểm tra tệp cấu hình trang web của bạn, thường nằm trong /etc/nginx/sites-available/. Một sai lầm phổ biến là đặt một chuyển hướng chung bên trong một khối đã đang lắng nghe trên cổng 443.
# CÁCH SAI (Gây ra vòng lặp)
server {
listen 443 ssl;
server_name example.com;
return 301 https://example.com$request_uri;
}
Thay vào đó, hãy tách biệt các nhiệm vụ. Sử dụng một khối cho việc chuyển từ HTTP sang HTTPS, và một khối khác cho nội dung trang web thực tế:
# CÁCH ĐÚNG
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
# Logic trang web thực tế của bạn nằm ở đây
}
Cách khắc phục 4: Cấu hình cứng các URL WordPress
Nếu bạn không thể đăng nhập vào bảng điều khiển /wp-admin do vòng lặp, bạn có thể ghi đè các cài đặt cơ sở dữ liệu theo cách thủ công. Thêm hai dòng này vào tệp wp-config.php của bạn, ngay phía trên dòng chú thích "That's all, stop editing!":
define('WP_HOME','https://example.com');
define('WP_SITEURL','https://example.com');
Phòng ngừa và các quy tắc tốt nhất
Khi quản lý các mạng phức tạp hoặc VPC, lưu lượng truy cập rất dễ bị định tuyến sai giữa bộ cân bằng tải và máy chủ gốc. Tôi thường sử dụng Subnet Calculator của ToolCraft để kiểm tra lại các khối CIDR khi thiết lập các quy tắc tường lửa. Việc sắp xếp các dải IP ngăn nắp đảm bảo rằng các lớp proxy của bạn không vô tình loại bỏ các tiêu đề SSL hoặc định tuyến lưu lượng quay lại sai cổng kết nối.
Luôn kiểm tra các quy tắc chuyển hướng mới bằng mã trạng thái 302 (Temporary). Các trình duyệt lưu bộ nhớ đệm cho các chuyển hướng 301 (Permanent) rất mạnh mẽ. Nếu bạn vô tình tạo ra một vòng lặp với mã 301, trình duyệt của bạn có thể tiếp tục chuyển hướng ngay cả sau khi bạn đã sửa mã trên máy chủ. Chỉ chuyển sang 301 khi bạn đã xác nhận mọi thứ hoạt động bình thường trong cửa sổ Ẩn danh.
Xác minh cuối cùng
Để đảm bảo lỗi đã thực sự được khắc phục, hãy mở Công cụ dành cho nhà phát triển (F12) của trình duyệt và chuyển đến tab Network. Tích vào ô "Disable Cache" và tải lại trang. Bạn sẽ thấy trạng thái 200 OK sạch sẽ. Nếu bạn thấy một lần chuyển hướng 301 duy nhất theo sau bởi một mã 200 OK, điều đó hoàn toàn bình thường—nó chỉ có nghĩa là chuyển hướng HTTP sang HTTPS của bạn đang hoạt động đúng như mong đợi.

