Hệ thống URI thân thiện với con người trong haih-agent duy trì tính ổn định của địa chỉ và các tín hiệu SEO
Hệ thống URI thân thiện với con người trong haih-agent duy trì tính ổn định của địa chỉ và các tín hiệu SEO
Trong haih-agent, các Concept công khai đang dần chuyển đổi từ các địa chỉ kỹ thuật có mã định danh sang các địa chỉ thân thiện với con người (slug/URL thân thiện), phản ánh ý nghĩa của trang.
Việc triển khai bắt đầu hình thành từ commit:
https://github.com/haih-net/agent/commit/1f99a51dd407eb4e58f9e2f83f411a265db2f24c
Tạo URI
Nếu URI không được chỉ định rõ ràng, một slug thân thiện với con người được xây dựng từ tên sẽ được sử dụng cho Concept. Logic chung slugifyUri() được áp dụng cho việc này.
URI được xử lý theo từng phân đoạn, chứ không phải dưới dạng một chuỗi duy nhất toàn bộ. Điều này rất quan trọng: / vẫn giữ nguyên cấu trúc đường dẫn, trong khi mỗi phân đoạn riêng lẻ được chuẩn hóa một cách độc lập.
Ví dụ:
/concepts/TypeScript Generics
→
/concepts/typescript-generics
Phương pháp này cho phép sử dụng các từ ngữ có nghĩa trực tiếp trong URL thay vì mã CUID kỹ thuật.
Thay đổi URI và 301
Khi thay đổi URI, logic chung processUriChange(oldUri, newUri) hoặc phiên bản tương đương hiện tại của nó sẽ được sử dụng.
URI mới được chuẩn hóa trước tiên. Nếu địa chỉ thực sự thay đổi, hệ thống sẽ tạo một chuyển hướng vĩnh viễn (permanent redirect):
URI cũ → URI mới
HTTP 301
Sau đó, Concept giữ nguyên địa chỉ mới.
Điều này cho phép thay đổi và cải thiện URI mà không làm hỏng hàng loạt các liên kết đã được xuất bản trước đó.
Giải mã URL đầu vào
Khi đọc tuyến đường (route), các URL được mã hóa phần trăm phải được đưa về cùng một dạng biểu diễn mà URI được lưu trữ trong hệ thống.
Ban đầu, vấn đề xuất hiện ở các địa chỉ có %22 và các ký tự được mã hóa khác. Việc đơn giản sử dụng decodeURI() chỉ giải quyết được một số trường hợp, nhưng tỏ ra không đủ đối với các ký tự dành riêng.
Ví dụ:
/projects/%40prisma-cms/sendmail
phải khớp với:
/projects/@prisma-cms/sendmail
decodeURI() không chuyển đổi %40 thành @, do đó logic mục tiêu phải nhận biết phân đoạn (segment-aware): trước tiên giữ nguyên cấu trúc pathname theo /, sau đó giải mã các phân đoạn riêng lẻ qua decodeURIComponent() và ghép lại đường dẫn.
Điều này đối xứng với logic slugifyUri(), cũng hoạt động theo từng phân đoạn.
Di chuyển các Concept cũ
Bản thân cơ chế URI mới không tự động sửa các Concept lịch sử đã được tạo bằng URL kỹ thuật. Cần có một cơ chế di chuyển hàng loạt (bulk migration) hành chính cho việc này: tính toán slug hiện tại, cập nhật URI thông qua logic thay đổi địa chỉ chung và lưu chuyển hướng 301 từ URL cũ.
Công việc cập nhật URI hàng loạt liên quan đang được phát triển riêng trong haih-agent.
Ý nghĩa SEO
Hệ thống giải quyết đồng thời nhiều nhiệm vụ:
- Bản thân URL chứa chủ đề của tài liệu và trở thành một tín hiệu ngữ nghĩa bổ sung;
- Các liên kết cũ không biến thành lỗi 404 sau khi cải thiện địa chỉ;
- 301 giúp chuyển các tín hiệu đã tích lũy sang URI chuẩn (canonical) mới;
- Các CUID kỹ thuật dần không còn là giao diện công khai của trang web;
- Việc chuẩn hóa URI thống nhất làm giảm số lượng bản sao giả mạo và lỗi 404;
- Các dự án downstream trên haih-agent nhận được một cơ chế URL thân thiện chung thay vì các triển khai cục bộ.
Hệ thống này đặc biệt quan trọng đối với fi1osof.ru — lõi thông tin thống nhất của hoạt động chuyên môn, nơi các Concept công khai phải có địa chỉ rõ ràng và liên kết nội bộ ổn định.
Hạn chế hiện tại: Tính toàn vẹn của liên kết bên trong content
URI ổn định của chính thực thể chưa đảm bảo tính toàn vẹn của toàn bộ biểu đồ (graph). Trong content của Concept vẫn có thể tồn tại các liên kết trỏ đến các URI không tồn tại hoặc đã bị sửa đổi.
Do đó, lớp tiếp theo cần thiết của hệ thống là tự động xác thực các liên kết nội bộ và cập nhật content khi tạo/thay đổi Concept. Điều này sẽ ngăn chặn sự xuất hiện của các liên kết hỏng trong nội dung do AI tạo ra và nội dung được cập nhật thủ công.
Liên quan: