Technical SEO

Case Sensitivity in URLs

Tính chất phân biệt chữ hoa/chữ thường của hệ thống máy chủ ảnh hưởng đến cách xử lý URL và khả năng trùng lặp nội dung.

3 lượt xem Cập nhật: 27/05/2026

Case Sensitivity in URLs là gì?

Tính phân biệt chữ hoa/chữ thường trong URL (Case Sensitivity in URLs) là cách máy chủ web xử lý các ký tự viết hoa và viết thường như những ký tự khác nhau. Khi một hệ thống phân biệt chữ hoa/thường, thì /SanPham, /sanpham/Sanpham được coi là ba địa chỉ riêng biệt — dù nội dung trang giống nhau. Ngược lại, nếu hệ thống không phân biệt, cả ba URL đều dẫn đến cùng một trang.

Đây không phải là quy định của giao thức HTTP hay tiêu chuẩn URL (RFC 3986), mà do cách cấu hình máy chủ (Apache, Nginx, IIS), hệ điều hành nền tảng (Linux/Unix vs Windows/macOS) và logic ứng dụng phía sau quyết định.

Tại sao quan trọng trong SEO?

Khi nhiều URL khác nhau trỏ đến cùng một nội dung, Google và các công cụ tìm kiếm có thể hiểu nhầm đó là nội dung trùng lặp (duplicate content). Hệ quả bao gồm:

  • Mất tập trung tín hiệu liên kết: backlink phân tán giữa các phiên bản URL thay vì dồn vào một phiên bản chính;
  • Giảm khả năng xếp hạng do thuật toán không xác định được phiên bản “chuẩn”;
  • Tăng tải không cần thiết cho bot thu thập dữ liệu (crawl budget bị lãng phí);
  • Rủi ro bị phạt nhẹ nếu hệ thống phát hiện cố tình tạo nội dung trùng để thao túng thứ hạng.

Đặc biệt với website thương mại điện tử hoặc blog có đường dẫn động (ví dụ: /danh-muc/ao-thun, /DANH-MUC/AO-THUN), sai sót ở cấp máy chủ hoặc CMS dễ gây ra hàng chục phiên bản URL trùng lặp — ảnh hưởng trực tiếp đến hiệu quả kỹ thuật SEO.

Cách hoạt động

Máy chủ web đọc URL từ yêu cầu HTTP và so sánh nó với cấu trúc thư mục hoặc quy tắc định tuyến. Cách xử lý phụ thuộc vào:

  1. Hệ điều hành: Linux/Unix phân biệt chữ hoa/thường; Windows và macOS (ở chế độ mặc định) thường không phân biệt;
  2. Web server: Apache mặc định phân biệt; Nginx cũng phân biệt trừ khi dùng rewrite hoặc map để chuẩn hóa; IIS trên Windows thường không phân biệt, nhưng có thể bật tính năng này qua cấu hình;
  3. Ứng dụng/CMS: WordPress không phân biệt chữ hoa/thường trong permalink nếu dùng cấu hình mặc định và máy chủ Windows; nhưng trên Linux + Apache, nếu permalink chứa biến (như %postname%) và không có xử lý chuẩn hóa, các link từ RSS, email hoặc đối tác có thể tạo URL viết hoa gây trùng lặp.

Hướng dẫn thực hiện

Để kiểm soát Case Sensitivity trong URLs, bạn cần đồng bộ ở 3 cấp: máy chủ, CMS và nội bộ website.

  1. Kiểm tra hành vi thực tế: Truy cập thủ công các biến thể URL (ví dụ: /lien-he, /LIEN-HE, /Lien-Ho) → ghi nhận mã trạng thái HTTP (301/200/404) và nội dung trả về.
  2. Chuẩn hóa tại máy chủ:
    • Trên Apache: Dùng RewriteRule trong .htaccess để chuyển toàn bộ URL sang chữ thường trước khi xử lý:
      RewriteEngine On
      RewriteCond %{REQUEST_URI} [A-Z]
      RewriteRule ^(.*)$ ${lowercase:$1} [R=301,L]
      (Lưu ý: cần bật module mod_speling hoặc dùng mod_rewrite với hỗ trợ ${lowercase} — chỉ có trên Apache 2.4.26+)
    • Trên Nginx: Dùng khối map để chuẩn hóa URI thành chữ thường, sau đó redirect 301.
  3. Thiết lập canonical đúng: Đảm bảo mỗi trang chỉ có một thẻ <link rel="canonical"> trỏ tới phiên bản chuẩn (toàn bộ chữ thường, không dấu, không khoảng trắng).
  4. Kiểm soát nội bộ: Cập nhật tất cả internal link (menu, footer, bài viết) để chỉ dùng phiên bản chuẩn. Kiểm tra RSS feed, sitemap XML, schema markup — đảm bảo không sinh URL viết hoa.
  5. Theo dõi bằng công cụ: Dùng Google Search Console → báo cáo “URL bị trùng lặp”, hoặc Screaming Frog để quét và lọc các URL có ký tự hoa bất thường.

Lỗi thường gặp

Lỗi Dấu hiệu Cách khắc phục
URL viết hoa xuất hiện trong sitemap Sitemap chứa /Blog/Tin-Tuc thay vì /blog/tin-tuc Cập nhật plugin sitemap (như Yoast SEO, Rank Math) để tự động chuyển lowercase; hoặc chỉnh hàm xuất sitemap tùy chỉnh.
Internal link từ widget hoặc shortcode Menu con hoặc nút “Xem thêm” tạo link /SAN-PHAM Thay đổi template hoặc shortcode để gọi hàm esc_url(strtolower(get_permalink())) (WordPress); hoặc sửa trực tiếp HTML nếu dùng static site.
Máy chủ trả về 200 cho nhiều biến thể Cả /gioi-thieu/GIOI-THIEU đều hiển thị nội dung giống nhau Thêm redirect 301 từ tất cả biến thể viết hoa về phiên bản chuẩn — không dùng canonical làm “giải pháp duy nhất”.

Ví dụ thực tế

Một website thời trang Việt Nam chạy trên VPS Linux + Apache đã từng có vấn đề: do nhân viên marketing sao chép link từ email mẫu (có dạng /DANH-MUC/QUAN-AO-NAM) để đăng lên Facebook, dẫn đến hàng trăm backlink ngoại vi trỏ tới URL viết hoa. Đồng thời, CMS không thiết lập canonical nhất quán. Kết quả: Google index hơn 120 URL trùng lặp cho cùng một danh mục, khiến tỉ lệ click-through giảm 37% trong 2 tháng. Sau khi triển khai redirect 301 toàn bộ URL viết hoa → chữ thường + cập nhật canonical + làm sạch internal link, số URL trùng lặp giảm còn dưới 5 trong vòng 3 tuần, và traffic hữu cơ tăng trở lại 22% sau 6 tuần.

Câu hỏi thường gặp

Google có phân biệt chữ hoa/thường trong URL không?

Google coi URL là phân biệt chữ hoa/thường theo đúng cách máy chủ xử lý. Nếu máy chủ trả về 200 cho cả /abc/ABC, Google sẽ crawl và index cả hai — và coi chúng là hai trang riêng biệt, trừ khi có thẻ canonical rõ ràng hoặc redirect 301.

Tôi nên chọn phiên bản nào làm chuẩn: chữ thường hay chữ hoa?

Nên chọn chữ thường làm chuẩn — vì đây là chuẩn thực tiễn phổ biến nhất (RFC khuyến nghị, dễ đọc, thân thiện với người dùng, tương thích cao với mọi hệ thống). Không nên dùng chữ hoa hoặc hỗn hợp trừ trường hợp đặc biệt (ví dụ: thương hiệu bắt buộc viết hoa như “iPhone” trong slug — lúc đó cần xử lý riêng).

Có cần redirect tất cả URL viết hoa nếu website đang chạy trên Windows/IIS?

Tùy trường hợp. IIS trên Windows mặc định không phân biệt chữ hoa/thường, nên /abc/ABC thường dẫn đến cùng một trang mà không cần redirect. Tuy nhiên, nếu bạn dùng URL rewrite hoặc proxy ngược (qua Nginx), hoặc tích hợp hệ thống bên ngoài (API, CDN), hành vi có thể thay đổi — nên kiểm tra thực tế bằng công cụ như Redirect Checker hoặc curl trước khi quyết định.