Nhiệm vụ: Xây dựng cơ chế "trang đã bị xóa vĩnh viễn" cho các thực thể công khai
Xây dựng cơ chế "trang đã bị xóa vĩnh viễn" cho các thực thể công khai
Thêm cơ chế chính xác để xóa vĩnh viễn các trang công khai mà không trả về lỗi 404 thông thường.
Mục tiêu
Thiết kế và triển khai trong haih-agent cơ chế xóa vĩnh viễn trang công khai sao cho URL cũ không hiển thị như một tài nguyên bị thiếu vô tình.
Hiện tại, các thực thể công khai không mong muốn hoặc được tạo nhầm không thể đơn giản bị xóa nếu URL bên ngoài có thể đã trỏ tới chúng: lỗi 404 Not Found thông thường không giải thích cho công cụ tìm kiếm và người dùng biết rằng trang đã từng tồn tại và bị xóa có chủ đích.
Cần có một kịch bản riêng biệt "trang đã bị xóa vĩnh viễn".
Ý tưởng cơ bản
Đối với một trang công khai đã bị xóa vĩnh viễn, URI cũ vẫn phải được hệ thống xử lý, nhưng trả về một trạng thái xóa đặc biệt thay vì lỗi 404 thông thường.
Trạng thái HTTP ưu tiên là 410 Gone.
410 mang ý nghĩa ngữ nghĩa rằng tài nguyên từng tồn tại nhưng đã bị gỡ bỏ có chủ đích và sẽ không quay lại. Điều này phù hợp với yêu cầu hơn so với 404, vốn không phân biệt được URL chưa từng tồn tại với URL đã bị xóa.
Những việc cần thiết kế
1. Mô hình dữ liệu
Xác định cách lưu trữ thông tin về việc URL đã bị xóa vĩnh viễn.
Các phương án có thể:
- thực thể riêng biệt
GoneRoute/RemovedRoute; - mở rộng hệ thống
SiteRoutehiện có; - mở rộng các quy tắc chuyển hướng (redirect rules) với loại hành động mới;
- bản ghi tombstone cho thực thể bị xóa.
Quan trọng: Sau khi thực thể chính bị xóa vật lý, thông tin về URI cũ không được biến mất.
Tối thiểu cần lưu trữ:
- URI cũ;
- ngày xóa;
- loại thực thể ban đầu;
- thông báo/lý do công khai nếu cần;
- người thực hiện xóa;
- liên kết tùy chọn đến danh mục cha hoặc giải pháp thay thế được đề xuất.
2. Hành vi HTTP
Đối với URI đã đăng ký là đã xóa vĩnh viễn, trả về:
410 Gone
thay vì lỗi 404 thông thường.
Trong khi đó, các URL không xác định chưa từng tồn tại vẫn phải tiếp tục trả về 404.
3. Giao diện trang (UI)
Hiển thị trang thông báo chuẩn, ví dụ:
Trang đã bị xóa vĩnh viễn
Tài liệu này không còn khả dụng.
Có thể thêm:
- liên kết đến danh mục cha;
- tìm kiếm;
- trang chủ;
- trang thay thế được đề xuất, nếu có.
Đây không phải là trang lỗi kỹ thuật có chứa stack trace hoặc màn hình trống.
4. SEO
Cơ chế này rất quan trọng để quản lý chỉ mục (index) chính xác.
410 Gone cung cấp cho các công cụ tìm kiếm tín hiệu chính xác hơn so với 404: tài nguyên đã bị xóa có chủ đích và không nên tiếp tục được coi là tạm thời không có sẵn.
Điều này hữu ích cho:
- đẩy nhanh việc xóa các trang không cần thiết khỏi chỉ mục tìm kiếm;
- giảm số lượng URL rác trong chỉ mục;
- ngăn chặn việc cào lại (recrawl) nội dung đã cố tình xóa;
- duy trì cấu trúc trang web sạch sẽ sau các đợt di chuyển/dọn dẹp lớn;
- phân biệt giữa các liên kết hỏng thực sự (
404) và các tài liệu bị xóa có chủ đích (410).
Quan trọng: Nếu trang bị xóa có bản thay thế đầy đủ với cùng ý nghĩa, thay vì dùng 410, tốt hơn nên dùng 301 chuyển hướng đến URL chuẩn (canonical URL) mới. 410 cần thiết chính xác khi tài nguyên bị xóa mà không có bản thay thế tương đương.
5. Quy trình xóa thực thể
Cần xác định luồng quản trị (admin flow):
- Quản trị viên chọn "Xóa vĩnh viễn".
- Trước khi xóa, hệ thống lưu URI vào tombstone/gone-route.
- Thực thể chính bị xóa hoặc được đánh dấu là đã xóa — tùy thuộc vào kiến trúc đã chọn.
- URI cũ bắt đầu phản hồi mã
410. - Việc tạo lại một thực thể khác với cùng URI phải là một hành động được kiểm soát rõ ràng, chứ không phải xảy ra ngẫu nhiên.
6. Tương tác với quy tắc chuyển hướng (redirect rules)
Xác định các ưu tiên:
- nếu URI có
301trỏ đến bản thay thế hiện có — chuyển hướng phải hoạt động; - nếu URI được khai báo là permanently gone — trả về
410; - các quy tắc không được xung đột hoặc tạo ra kết quả mập mờ.
Cần có một thứ tự xử lý quy tắc định tuyến thống nhất.
Trường hợp thực tế đầu tiên
Trên conceptica.world hiện có ba khái niệm về nặn tượng được tạo ngẫu nhiên. Chưa nên xóa chúng lúc này chính vì rủi ro biến các URL công khai hiện tại thành lỗi 404 thông thường.
Sau khi cơ chế 410 Gone xuất hiện, chúng có thể được sử dụng làm trường hợp thực tế đầu tiên cho việc xóa trang vĩnh viễn.
Tiêu chí nghiệm thu
- Đã xác định mô hình lưu trữ cho các URI đã xóa vĩnh viễn.
- Quản trị viên có thể xóa thực thể công khai trong khi vẫn giữ lại tombstone cho URL cũ.
- URL cũ trả về HTTP
410 Gone. - Các URL không xác định tiếp tục trả về
404. - Có trang người dùng "Trang đã bị xóa vĩnh viễn" cho
410. - Đã xác định mức độ ưu tiên giữa
301,410và404thông thường. - URI của trang bị xóa không thể bị tái sử dụng vô tình nếu không có quyết định rõ ràng.
- Đã thêm các bài kiểm thử cho
301,410,404và xung đột quy tắc. - Đã kiểm tra hành vi SEO: trang bị xóa không chứa thẻ canonical trỏ về chính nó và không được lập chỉ mục như một tài liệu đang hoạt động.
- Sau khi triển khai, cơ chế này có thể được áp dụng cho các khái niệm ngẫu nhiên trên
conceptica.world.