Tôi mua một tên miền được đăng ký lần đầu vào năm 2000. Trên giấy tờ, lịch sử dài như vậy trông giống một lợi thế. Nhưng sau khi website mới lên sóng, log máy chủ bắt đầu đầy những request tới các trang mà tôi chưa từng tạo.
Có hơn 1.000 request mỗi ngày nhắm vào những URL không hề tồn tại trong dự án mới. Trong analytics, điều đó xuất hiện như một cú tăng lớn của direct traffic nhưng gần như không có engagement. Cùng lúc, crawler của Yandex quay lại các path cũ, nhận 404 Not Found, và Yandex Webmaster tích lũy hơn 900 lỗi chỉ trong một đêm.
Giải thích đầu tiên của tôi rất đơn giản: bot cũ liên tục đập vào URL chết, Yandex nhìn thấy hoạt động đó nên tiếp tục crawl. Từ góc nhìn của tôi, trình tự sự kiện đúng là trông như vậy. Nhưng dữ liệu của tôi không đủ để chứng minh quan hệ nhân quả đó.
Điều tôi thực sự có thể xác nhận
Có ba quan sát tách biệt. Thứ nhất, máy chủ nhận rất nhiều request tới URL từ đời trước của tên miền. Thứ hai, traffic đó gần như không tạo ra engagement thực sự. Thứ ba, crawler Yandex cũng yêu cầu các path cũ và dashboard Webmaster ghi nhận hơn 900 lỗi trong một đêm.
Về vận hành, đây vẫn là vấn đề thật: log nhiễu, request không cần thiết và một báo cáo lỗi cần dọn dẹp. Nhưng các dữ kiện này không chứng minh bot bên thứ ba khiến Yandex crawl các URL đó, cũng không chứng minh lỗi trực tiếp làm giảm ranking hay organic traffic. Crawling không phải indexing, indexing không phải ranking, và báo cáo lỗi không phải bằng chứng của penalty.
Phần tôi đã đơn giản hóa quá mức về 404 và 410
Trước đây tôi nghĩ đại khái: 404 nghĩa là “có thể chỉ đang thiếu tạm thời”, còn 410 nghĩa là “đã biến mất vĩnh viễn”. Cách hiểu đó trực quan nhưng không hoàn toàn chính xác về mặt kỹ thuật.
404 Not Found nghĩa là máy chủ không thể cung cấp representation hiện tại của resource được yêu cầu; bản thân status không nói tình trạng đó là tạm thời hay vĩnh viễn. 410 Gone cụ thể hơn: phù hợp khi máy chủ biết resource không còn tồn tại và tình trạng đó được xem là lâu dài.
Sự chính xác này cũng quan trọng khi nói về SEO. Công cụ tìm kiếm có thể loại URL trả về 404 hoặc 410 khỏi kết quả. Vì vậy hiện tại tôi không gọi 410 là một status “mạnh hơn cho SEO” theo kiểu ma thuật, và cũng không coi 404 là sai cho mọi trang đã bị xóa.
Vì sao 410 có chọn lọc vẫn hợp lý trong trường hợp của tôi
Những path cũ không phải lỗi tạm thời. Chúng thuộc về nội dung trước đây của tên miền và không có vị trí trong dự án mới. Tôi biết những URL cụ thể đó đã biến mất vĩnh viễn. Vì vậy 410 Gone mô tả chính xác trạng thái của chúng.
Tôi cấu hình 410 chỉ cho những legacy path đã biết, thay vì biến mọi URL lạ thành 410. Sau thay đổi đó, noise trong crawl và reporting quanh các path cũ giảm xuống, và tình trạng trong webmaster tools sạch hơn rõ rệt.
Tuy nhiên tôi vẫn thận trọng với quan hệ nhân quả. Tôi có thể nói rằng sự cải thiện xảy ra sau thay đổi và 410 phản ánh đúng trạng thái URL. Tôi không thể chứng minh 410 một mình khiến mọi bot dừng lại. Bot bên thứ ba hoàn toàn có thể bỏ qua ý nghĩa của HTTP status và tiếp tục request cùng một path mãi mãi.
Quy tắc quyết định tôi dùng hiện nay
Câu hỏi hữu ích không phải “410 có tốt hơn 404 không?”, mà là “URL này thực sự đã xảy ra chuyện gì?”
- Có một trang thay thế rõ ràng: dùng permanent redirect như
301tới URL mới thực sự tương đương. - Resource cũ được biết là đã xóa vĩnh viễn và không có thay thế:
410 Gonelà lựa chọn chính xác. - URL chỉ là không xác định, gõ sai hoặc chưa từng tồn tại:
404 Not Foundbình thường là phù hợp.
Tôi sẽ tránh redirect mọi URL chết về trang chủ chỉ để làm lỗi biến mất. Điều đó che giấu trạng thái thật của resource và có thể tạo trải nghiệm tệ hơn cho cả người dùng lẫn crawler.
Nếu làm lại, tôi sẽ audit tên miền cũ trước khi launch thế nào
Nếu tái sử dụng một tên miền có lịch sử, tôi sẽ coi lịch sử URL của nó là một phần của migration ngay cả khi không di chuyển website cũ.
- Kiểm tra footprint cũ. Tìm historical URL và các legacy section rõ ràng trước khi launch.
- Theo dõi access log từ ngày đầu. Request lặp lại tới những path bạn chưa từng tạo là bằng chứng rằng tên miền vẫn được hệ thống bên ngoài ghi nhớ.
- Tách người dùng, search crawler và bot ngẫu nhiên. Một cú tăng direct traffic và một crawler error là hai signal khác nhau; đừng tự động ghép chúng thành một câu chuyện nhân quả.
- Phân loại dead URL xuất hiện lặp lại. Với từng pattern quan trọng, quyết định rõ nên là 301, 404 hay 410.
- Theo dõi kết quả riêng biệt. Tần suất request, crawler report và indexing là các khía cạnh khác nhau; tôi không gom chúng vào một chỉ số mơ hồ kiểu “SEO health”.
Đây là lượng công việc nhỏ so với việc chỉ phát hiện vấn đề khi log và webmaster tools đã ngập noise.
410 không giải quyết được gì
410 là một phát biểu HTTP về trạng thái của resource. Nó không phải firewall, rate limiter hay cơ chế chặn bot. Nếu scraper tiếp tục gửi request sau khi nhận 410, máy chủ vẫn phải nhận và phản hồi. Nếu vấn đề thật sự là request volume mang tính lạm dụng, đó là một vấn đề infrastructure riêng.
410 cũng không phải SEO boost. Status đúng giúp crawler hiểu chuyện gì đã xảy ra với URL; tự nó không làm website mới rank cao hơn.
Bài học tôi giữ lại
Điều bất ngờ không phải là tên miền cũ có URL cũ. Điều bất ngờ là lịch sử vô hình đó xuất hiện lại nhanh đến mức nào sau launch: hơn 1.000 request mỗi ngày tới những trang tôi không có, engagement gần như bằng 0, và hơn 900 lỗi Yandex Webmaster trong một đêm.
Tên miền cũ không phải một namespace trống. Link, crawler, script và bot có thể nhớ path nhiều năm sau khi nội dung gốc biến mất. Quy tắc hiện tại của tôi rất đơn giản: audit lịch sử đó, trả về HTTP status phù hợp với thực tế, và tách traffic bot vận hành khỏi các kết luận về hành vi của công cụ tìm kiếm.
Lịch sử có thể là tài sản. Nó cũng là state mà bạn thừa kế.