Kiểm tra chuỗi chuyển hướng URL: đọc mã trạng thái và hiểu giới hạn khi chạy từ trình duyệt
Công cụ gửi yêu cầu HEAD tới địa chỉ bạn nhập rồi lần theo tiêu đề Location qua tối đa mười bước, hiển thị mã trạng thái và địa chỉ của từng bước cùng địa chỉ đích cuối. Vì chạy ngay trong trình duyệt nên nó chịu ràng buộc chia sẻ tài nguyên khác nguồn, và mục dưới đây nói rõ khi nào bạn đọc được kết quả đầy đủ, khi nào cần chuyển sang lệnh dòng lệnh.
Tính năng nổi bật
- Nhập địa chỉ không cần gõ giao thức, công cụ tự thêm https vào đầu
- Gửi yêu cầu bằng phương thức HEAD nên không tải nội dung trang, chỉ lấy tiêu đề
- Lần theo tiêu đề Location qua tối đa mười bước để chặn vòng lặp chuyển hướng vô tận
- Ghép đúng địa chỉ tương đối trong tiêu đề Location với địa chỉ của bước trước
- Hiển thị mã trạng thái kèm tên gọi cho các mã 301, 302, 303, 307, 308, 200, 404 và 500
- Tô màu theo nhóm mã: xanh cho nhóm 2xx, vàng cho nhóm 3xx, đỏ cho nhóm 4xx và 5xx
- Đếm số bước và nêu rõ địa chỉ đích cuối cùng sau khi đi hết chuỗi
- Nút sao chép toàn bộ chuỗi theo dạng mã trạng thái kèm địa chỉ, mỗi bước một dòng
- Báo rõ khi yêu cầu bị chặn vì chính sách khác nguồn thay vì im lặng bỏ qua
Vì sao chuỗi chuyển hướng đáng để kiểm tra sau mỗi lần đổi cấu trúc
Chuyển hướng là thứ dễ cấu hình đúng cho một địa chỉ nhưng rất dễ sai khi nhân lên hàng nghìn địa chỉ. Sau một lần chuyển tên miền hay đổi cấu trúc đường dẫn, những lỗi hay gặp không phải là chuyển hướng không chạy mà là chuyển hướng chạy vòng vèo: địa chỉ cũ trỏ sang địa chỉ trung gian, địa chỉ trung gian lại trỏ tiếp sang bản có dấu gạch chéo cuối, rồi mới tới đích. Mỗi bước là một vòng đi về máy chủ, người dùng trên mạng di động cảm nhận rõ độ trễ đó. Nguy hiểm hơn là hai quy tắc chuyển hướng cấu hình lệch nhau tạo thành vòng lặp, trình duyệt sẽ báo lỗi quá nhiều lần chuyển hướng và trang không mở được. Những lỗi này không hiện ra trong lúc kiểm thử vì lập trình viên thường gõ thẳng địa chỉ đích, chỉ người dùng đi từ liên kết cũ mới gặp. Nhìn thấy toàn bộ chuỗi là cách nhanh nhất để phát hiện.
Lợi ích khi sử dụng
- Thấy được toàn bộ đường đi của một địa chỉ thay vì chỉ biết trang cuối mở ra được
- Phát hiện chuỗi ba bốn bước có thể rút gọn lại thành một bước duy nhất
- Xác nhận đang dùng đúng loại chuyển hướng vĩnh viễn hay tạm thời
- Kiểm tra nhanh một địa chỉ ngay trên trình duyệt mà không cần mở cửa sổ dòng lệnh
- Sao chép được chuỗi kết quả để dán vào phiếu công việc hoặc gửi cho người phụ trách máy chủ
Cách kiểm tra chuỗi chuyển hướng
- 1Dán địa chỉ cần kiểm tra vào ô nhập, có thể bỏ phần giao thức vì công cụ tự thêm https.
- 2Nhấn phím Enter hoặc bấm nút tìm kiếm bên cạnh ô nhập để bắt đầu.
- 3Đọc danh sách các bước theo thứ tự, mỗi dòng gồm mã trạng thái, địa chỉ và tên gọi của mã.
- 4Xem dòng tổng kết ở cuối để biết có bao nhiêu lần chuyển hướng và địa chỉ đích cuối là gì.
- 5Nếu thấy trạng thái bằng 0 hoặc thông báo bị chặn khác nguồn, hãy chạy lại bằng lệnh dòng lệnh trên máy để có kết quả đầy đủ.
Giới hạn quan trọng: trình duyệt không đọc được tiêu đề của bất kỳ bước chuyển hướng nào
Đây là điều bạn cần biết trước khi diễn giải kết quả. Công cụ gọi hàm fetch với chế độ chuyển hướng đặt thành thủ công để tự lần từng bước. Theo đặc tả Fetch, hễ máy chủ đích trả về một phản hồi chuyển hướng (mã 3xx) thì trình duyệt luôn trả về một phản hồi bị che ở chế độ thủ công này — mã trạng thái hiện thành 0 và toàn bộ tiêu đề, bao gồm Location, không đọc được, bất kể địa chỉ đó cùng tên miền với trang này hay khác tên miền. Hệ quả là chuỗi dừng lại ngay sau bước có chuyển hướng và bạn thấy một dòng trạng thái 0; công cụ hiển thị dòng đó là "không đọc được đích chuyển hướng" chứ không suy diễn thành không có chuyển hướng. Trường hợp khác, nếu máy chủ không gửi tiêu đề cho phép truy cập khác nguồn thì bản thân lời gọi bị từ chối hoàn toàn và công cụ hiện thông báo bị chặn khác nguồn. Nghĩa là kết quả đầy đủ, đọc được mã và Location thật của từng bước, chỉ có khi bạn dùng công cụ chạy phía máy như curl. Đây là giới hạn của mọi công cụ chạy thuần trong trình duyệt, không phải lỗi cấu hình bên bạn.
Cách lấy chuỗi chuyển hướng đầy đủ khi trình duyệt bị chặn
Trên máy tính cá nhân, lệnh curl với tùy chọn hiện tiêu đề và tùy chọn đi theo chuyển hướng cho bạn toàn bộ chuỗi mà không vướng ràng buộc khác nguồn, vì nó không chạy trong trình duyệt. Bạn cũng có thể thêm tùy chọn ghi thời gian để biết mỗi bước tốn bao nhiêu mili giây. Trên Windows, lệnh Invoke-WebRequest trong PowerShell làm được việc tương tự khi tắt chế độ tự đi theo chuyển hướng. Một cách khác không cần cài gì là mở tab Network trong công cụ dành cho nhà phát triển của trình duyệt, bật tùy chọn giữ lại nhật ký, rồi gõ địa chỉ cũ vào thanh địa chỉ; mọi bước chuyển hướng đều hiện ra thành từng dòng riêng kèm mã trạng thái và tiêu đề Location. Với việc rà soát hàng loạt sau khi chuyển tên miền, các phần mềm thu thập dữ liệu trang chạy trên máy tính là lựa chọn phù hợp hơn vì chúng chạy phía máy chứ không phía trình duyệt.
Phân biệt các mã chuyển hướng và chọn đúng mã cho từng tình huống
Mã 301 báo địa chỉ đã dời vĩnh viễn, dùng khi đổi tên miền hoặc đổi cấu trúc đường dẫn và không có ý định quay lại. Mã 302 báo dời tạm thời, dùng khi bảo trì hoặc thử nghiệm A/B, và địa chỉ gốc vẫn là bản chính thức. Mã 303 chuyển hướng sau khi gửi biểu mẫu, buộc bước tiếp theo dùng phương thức GET để tránh gửi lại dữ liệu khi người dùng bấm tải lại. Điểm khác biệt kỹ thuật đáng nhớ nhất nằm ở cặp 307 và 308: cả hai giữ nguyên phương thức và phần thân của yêu cầu ban đầu, trong khi 301 và 302 trong thực tế bị nhiều trình duyệt đổi một yêu cầu POST thành GET. Vì vậy với các đầu nối dịch vụ nhận dữ liệu qua POST, chuyển hướng bằng 301 sẽ làm mất phần thân yêu cầu, còn 308 thì không. Ngoài ra khi trình duyệt đã ghi nhớ chính sách bắt buộc dùng kết nối an toàn cho một tên miền, nó tự đổi địa chỉ sang https bằng một bước 307 nội bộ mà máy chủ không hề tham gia.
Bốn quy tắc thường chồng lên nhau tạo ra chuỗi dài không cần thiết
Một trang web điển hình có bốn quy tắc chuyển hướng chạy song song: chuyển http sang https, chuyển bản không có www sang bản có www hoặc ngược lại, thêm hoặc bỏ dấu gạch chéo ở cuối đường dẫn, và hạ toàn bộ chữ hoa trong đường dẫn về chữ thường. Nếu mỗi quy tắc là một khối cấu hình riêng chạy nối tiếp, một địa chỉ nhập kiểu http và không có www và có chữ hoa sẽ đi qua đủ bốn bước mới tới đích. Cách khắc phục là gộp lại: đặt một quy tắc duy nhất dựng thẳng địa chỉ chuẩn từ đường dẫn hiện tại rồi chuyển hướng một lần. Trên Nginx, thay vì viết nhiều khối server nối nhau, hãy tách một khối bắt mọi biến thể rồi trả về một địa chỉ đã chuẩn hóa. Nếu bạn dùng lớp trung gian ở biên mạng, hãy kiểm tra xem lớp đó có tự thêm một bước chuyển hướng nữa hay không, vì rất nhiều chuỗi ba bước sinh ra do một bước ở biên cộng với một bước ở máy chủ gốc.
Chuyển hướng khi đổi tên miền hoặc đổi cấu trúc đường dẫn
Nguyên tắc gốc là ánh xạ một đổi một: mỗi địa chỉ cũ trỏ tới đúng trang mới có nội dung tương đương, chứ không dồn hết về trang chủ. Dồn về trang chủ khiến công cụ tìm kiếm coi đó là chuyển hướng mềm và xử lý gần như trang không tồn tại, tức là bạn mất sạch giá trị của địa chỉ cũ. Về thời gian duy trì, nên giữ các quy tắc chuyển hướng ít nhất một năm sau khi chuyển, vì các liên kết cũ từ bên ngoài vẫn tiếp tục gửi người dùng tới trong suốt thời gian đó. Song song với việc đặt chuyển hướng, hãy sửa luôn liên kết nội bộ để chúng trỏ thẳng tới địa chỉ mới, cập nhật sơ đồ trang chỉ liệt kê địa chỉ mới, và sửa thẻ chuẩn hóa trên từng trang. Về ảnh hưởng tới thứ hạng, Google đã nói rõ rằng chuyển hướng nhóm 3xx không làm hao hụt sức mạnh liên kết, nên lý do thật sự để rút ngắn chuỗi là tốc độ tải và ngân sách thu thập chứ không phải nỗi lo mất giá trị liên kết.
Câu hỏi thường gặp (FAQ)
Vì sao kết quả chỉ hiện một dòng có trạng thái 0?
Vì địa chỉ bạn kiểm tra trả về một phản hồi chuyển hướng, và điều đó xảy ra bất kể địa chỉ cùng tên miền hay khác tên miền với trang này. Trình duyệt che phản hồi chuyển hướng đó lại ở chế độ lần bước thủ công: mã trạng thái thành 0 và tiêu đề Location không đọc được, nên công cụ không biết đi tiếp về đâu — đây là lý do dòng đó hiển thị là không đọc được đích chuyển hướng, không phải là không có chuyển hướng. Đây là ràng buộc bảo mật của trình duyệt. Hãy dùng lệnh curl trên máy hoặc tab Network để xem chuỗi đầy đủ.
Thông báo bị chặn khác nguồn nghĩa là trang của tôi có lỗi phải không?
Không. Nó chỉ có nghĩa là máy chủ đó không gửi tiêu đề cho phép một trang web khác đọc phản hồi của mình, và đó là cấu hình mặc định hợp lý của hầu hết máy chủ. Người dùng thật truy cập bằng thanh địa chỉ vẫn hoàn toàn bình thường. Đừng mở rộng cấu hình cho phép truy cập khác nguồn chỉ để công cụ này chạy được.
Nên dùng 301 hay 302 khi đổi địa chỉ trang?
Dùng 301 khi việc đổi là vĩnh viễn, ví dụ đổi tên miền, gộp hai trang trùng nội dung hay đổi cấu trúc đường dẫn. Dùng 302 khi chỉ tạm thời, ví dụ trang đang bảo trì hoặc đang thử nghiệm phiên bản khác, vì khi đó địa chỉ gốc vẫn là bản chính. Đặt nhầm 302 cho việc chuyển vĩnh viễn khiến công cụ tìm kiếm giữ địa chỉ cũ lâu hơn cần thiết.
307 và 308 khác gì so với 302 và 301?
Khác ở chỗ giữ nguyên phương thức và phần thân của yêu cầu. Với 301 và 302, trình duyệt thường đổi một yêu cầu POST thành GET và bỏ phần thân, còn 307 và 308 thì giữ nguyên. Điều này quan trọng với các đầu nối nhận dữ liệu qua POST: chuyển hướng bằng 301 sẽ khiến dữ liệu gửi lên biến mất mà không báo lỗi rõ ràng.
Bao nhiêu bước chuyển hướng thì bị coi là quá nhiều?
Thực tế nên giữ ở mức một bước, tối đa hai. Tài liệu của Google cho biết bộ thu thập đi theo tối đa khoảng mười bước trong một lượt, nhưng vấn đề không nằm ở giới hạn đó mà ở độ trễ: mỗi bước là một vòng đi về máy chủ, trên mạng di động có thể tốn vài trăm mili giây. Chuỗi từ ba bước trở lên hầu như luôn có thể gộp lại.
Chuyển hướng có làm mất sức mạnh liên kết không?
Theo Google thì không, họ đã nêu rõ rằng chuyển hướng nhóm 3xx không gây hao hụt PageRank. Con số hao hụt mười tới mười lăm phần trăm mỗi bước lan truyền trên nhiều bài viết là thông tin cũ không còn đúng. Lý do thật sự để rút ngắn chuỗi là tốc độ tải cho người dùng và tiết kiệm ngân sách thu thập của bộ tìm kiếm.
Vòng lặp chuyển hướng xảy ra do đâu?
Thường do hai quy tắc mâu thuẫn nhau, ví dụ máy chủ ép thêm dấu gạch chéo cuối trong khi ứng dụng lại ép bỏ dấu đó, hoặc lớp trung gian ở biên ép dùng https trong khi máy chủ gốc lại chuyển ngược về http vì không nhận biết được kết nối đã mã hóa. Cách tìm là liệt kê mọi nơi có thể phát ra chuyển hướng rồi tắt từng lớp để xác định lớp nào gây vòng lặp.
Công cụ đi được tối đa bao nhiêu bước?
Mười bước. Ngưỡng này vừa đủ cho mọi cấu hình hợp lý và đồng thời chặn được vòng lặp vô tận, vì nếu hai địa chỉ trỏ qua lại nhau thì việc lần theo sẽ không bao giờ dừng. Nếu bạn thấy chuỗi chạm ngưỡng mười bước mà chưa tới đích, gần như chắc chắn cấu hình đang có vòng lặp cần sửa ngay.
Vì sao công cụ dùng phương thức HEAD chứ không phải GET?
Vì HEAD chỉ lấy phần tiêu đề, không tải phần thân trang, nên nhanh hơn và ít tốn băng thông của máy chủ đích. Điều cần lưu ý là một số máy chủ và một số lớp tường lửa ứng dụng xử lý HEAD khác GET, thậm chí từ chối HEAD. Khi nghi ngờ, hãy đối chiếu lại bằng lệnh curl chạy với phương thức GET.
Có kiểm tra nhiều địa chỉ cùng lúc được không?
Phiên bản hiện tại chỉ nhận một địa chỉ mỗi lần. Với việc rà soát hàng loạt sau khi chuyển tên miền, cách hiệu quả là dùng phần mềm thu thập dữ liệu trang chạy trên máy tính, nạp danh sách địa chỉ cũ vào chế độ kiểm tra theo danh sách rồi xuất báo cáo chuỗi chuyển hướng để lọc ra những địa chỉ có nhiều hơn một bước.
Địa chỉ tôi nhập vào có bị lưu lại không?
Không. Địa chỉ nằm trong trạng thái của trang và lời gọi mạng đi thẳng từ trình duyệt của bạn tới máy chủ đích, không đi qua máy chủ trung gian nào của trang này và cũng không được ghi lại. Ngược lại, điều đó cũng có nghĩa là địa chỉ IP thật của bạn xuất hiện trong nhật ký của máy chủ đích.
Nên dùng 404 hay 410 cho trang đã gỡ hẳn?
Nếu trang bị gỡ vĩnh viễn và không có trang thay thế tương đương, mã 410 là lựa chọn rõ ràng hơn vì nó nói thẳng nội dung đã biến mất và công cụ tìm kiếm thường loại khỏi chỉ mục nhanh hơn. Mã 404 phù hợp khi bạn chưa chắc chắn. Tuyệt đối tránh chuyển hướng những trang này về trang chủ, vì cách đó bị coi là chuyển hướng mềm.
Từ khóa liên quan
- kiểm tra redirect online
- kiểm tra chuỗi chuyển hướng url
- redirect checker
- 301 redirect là gì
- phân biệt 301 và 302
- 307 và 308 redirect
- redirect chain seo
- lỗi quá nhiều lần chuyển hướng
- vòng lặp chuyển hướng
- chuyển hướng http sang https
- chuyển hướng www và không www
- dấu gạch chéo cuối url
- curl kiểm tra redirect
- mã trạng thái http
- chuyển tên miền không mất seo
- soft 404 là gì
- 410 gone khác 404
- cấu hình redirect nginx
- kiểm tra url đích cuối cùng
- audit redirect sau khi chuyển web