Đường dẫn URL có nên phân biệt chữ hoa chữ thường?


11

Các URL của trang web của tôi hiện không phân biệt chữ hoa chữ thường. Ví dụ: cả hai liên kết sau hiển thị cùng một trang:

  • http://example.com/about
  • http://example.com/About

Tuy nhiên, nhìn vào trang web wordpress.org, tôi nhận thấy rằng các URL phân biệt chữ hoa chữ thường. Ví dụ: liên kết thứ hai bên dưới là trang lỗi 404:

  • http://wordpress.org/about
  • http://wordpress.org/About

Suy nghĩ của tôi là làm cho trường hợp URL của trang web của tôi nhạy cảm. Ngoài vấn đề rõ ràng là tránh trùng lặp nội dung, những ưu và nhược điểm của việc có URL phân biệt chữ hoa chữ thường là gì?

Cập nhật

Google dường như vận hành chính sách URL phân biệt chữ hoa chữ thường trên các URL của riêng họ. Ví dụ: liên kết thứ hai bên dưới là 404:

  • http://google.com/doodles
  • http://google.com/Doodles

Cập nhật 2

Cảm ơn câu trả lời của bạn. Tôi quyết định thực hiện lời khuyên được đề cập trong câu trả lời được chấp nhận và thực hiện chuyển hướng 301 khi cần thiết. Vì tôi đang làm việc với WordPress, giải pháp mã của tôi như sau (trong trường hợp có ai quan tâm):

function force_lowercase_urls() {

    if ( is_admin() )
        return;

    if ( preg_match( '/[A-Z]/', $_SERVER['REQUEST_URI'] ) ) {

        wp_redirect( strtolower( $_SERVER['REQUEST_URI'] ), 301 );
        exit();
    }

}
add_action( 'init', 'force_lowercase_urls' );

1
But wouldn't that result in duplicate content? – henrywrightBạn không bao giờ phải lo lắng về các liên kết trùng lặp nếu trang web của bạn sử dụng các liên kết chính xác và bạn có thể có 1 trang truy cập hàng triệu cách và không bao giờ bị ảnh hưởng đối với nội dung trùng lặp.
Simon Hayter

@bybe Nếu bạn có một trang truy cập hàng triệu cách, Googlebot sẽ không thể thu thập dữ liệu trang web của bạn tốt. Có một trang truy cập một số cách không có khả năng bị tổn thương.
Stephen Ostermiller

Câu trả lời:


6

Hai trong số các hệ thống tệp hệ điều hành được sử dụng rộng rãi nhất để phục vụ nội dung web có các cài đặt rất khác nhau về độ nhạy trường hợp của URL theo mặc định. Liệu URL của bạn có phân biệt chữ hoa chữ thường hay không có khả năng là một chức năng mà bạn đang sử dụng:

  • Microsoft IIS chạy trên Windows - URL không phân biệt chữ hoa chữ thường - hiển thị cùng một nội dung bất kể viết hoa.
  • Máy chủ HTTPD Apache chạy trên Linux - URL nhạy cảm trường hợp - đưa ra lỗi 404 không tìm thấy cho viết hoa không chính xác.

Theo tôi, không mặc định là lý tưởng:

  • Hiển thị cùng một nội dung bất kể viết hoa làm cho việc thu thập dữ liệu trang web của bạn khó hơn. Các công cụ tìm kiếm coi cùng một nội dung trên nhiều URL là nội dung trùng lặp.
  • Hiển thị các trang lỗi cho viết hoa không chính xác là không thân thiện với người dùng. Người dùng thường không quan tâm đến việc viết hoa khi họ gõ.

Giải pháp lý tưởng sẽ chỉ hiển thị trang khi URL được viết hoa chính xác. Để viết hoa không chính xác, người dùng nên được chuyển hướng 301 sang viết hoa ưu tiên. Có một số cách mà điều này có thể được thực hiện:


1
Tôi cảm thấy đây là một tạo tác của DOS và Windows khác với tiêu chuẩn phân biệt chữ hoa chữ thường trước đây chúng ta có trong môi trường Unix.
CN

1
Việc Apache có phân biệt chữ hoa chữ thường đối với các yêu cầu ánh xạ tới hệ thống tệp hay không phụ thuộc vào hệ thống tệp cơ bản, không phải bản thân Apache. Nếu chạy Apache trên Windows thì yêu cầu /iNdEx.HtMlhoặc /InDeX.hTmlcả hai sẽ trả về /index.html(với điều kiện đó /index.htmllà tệp vật lý trên hệ thống tệp).
MrWhite

1
Trong thực tế, điều này dường như giống với IIS .
MrWhite

1
Chà, IIS luôn chạy trên Windows (AFAIK), vì vậy các yêu cầu hệ thống tệp sẽ luôn không phân biệt chữ hoa chữ thường. Tuy nhiên, nhiều trang web sẽ định tuyến (viết lại) URL thông qua một số loại bộ điều khiển phía trước - trong trường hợp này, yêu cầu có thể không ánh xạ tới tệp vật lý trên hệ thống tệp và do đó URL có thể phân biệt chữ hoa chữ thường (trừ khi ứng dụng đặc biệt làm cho trường hợp đó -ensensitive) - về cơ bản giống như Apache (khi chạy trên Windows). (?)
MrWhite

2
Tôi thực sự tình cờ tìm thấy ở đây trong khi nghiên cứu câu hỏi gần đây / bận rộn " Tại sao URL lại phân biệt chữ hoa chữ thường? ". Có vẻ như các cụm từ như "IIS không phân biệt chữ hoa chữ thường" (được nhắc đến nhiều lần trong luồng khác) rất phổ biến đến nỗi niềm tin phổ biến dường như là các URL trên IIS luôn không phân biệt chữ hoa chữ thường - ít nhất đó là ấn tượng tôi đang có - không có vẻ là trường hợp nào cả
MrWhite

4

Đây là vị trí của Google từ một phiên trò chuyện trực tiếp được lưu trữ (liên kết hiện đã chết):

* Việc viết hoa URL không nhất quán có gây ra sự cố trùng lặp nội dung và làm loãng thứ hạng trang không? Ví dụ: www.site.com/abc so với www.site.com/Abc. Trên máy chủ Windows, đây là cùng một trang, nhưng là các trang khác nhau trên máy chủ Unix.

JohnMu: Xin chào John, dựa trên các tiêu chuẩn hiện có, các URL phân biệt chữ hoa chữ thường, vì vậy, vâng, chúng sẽ được coi là các URL riêng biệt. Vì nội dung trên các URL giống nhau, nên chúng tôi thường nhận ra điều đó và chỉ giữ một trong số chúng. Tuy nhiên, chúng tôi khuyên bạn nên cố gắng giữ tất cả các liên kết đến một phiên bản của URL. Hãy nhớ rằng điều này cũng áp dụng cho các tệp robot.txt. *

Nhóm IE khuyên bạn nên chọn một quy ước vỏ tệp và tuân thủ nghiêm ngặt vì nó có thể cải thiện hiệu suất.


-2

RFC 3986 6.2.2.1 định nghĩa các URI là không phân biệt chữ hoa chữ thường, vì vậy không nên làm cho chúng phân biệt chữ hoa chữ thường như wordpress.org.


Nhưng điều đó sẽ không dẫn đến nội dung trùng lặp?

Trên thực tế không, bởi vì các công cụ tìm kiếm nên hoạt động không phân biệt chữ hoa chữ thường.

Tôi cho rằng câu hỏi bây giờ là làm thế nào để tìm hiểu xem các công cụ tìm kiếm xem các URL trên và dưới có tương đương không? Lấy Google làm ví dụ: Hãy thử google.com/Doodlesgoogle.com/doodles

10
RFC đó chỉ giải quyết trường hợp ba phần của URL. 1 - Giao thức ( http://) - trường hợp không nhạy, chuẩn hóa thành chữ thường. 2 - Tên máy chủ ( example.com) - trường hợp không nhạy cảm, bình thường hóa thành chữ thường. 3. Phần trăm ký tự được mã hóa ( %3F) - không phân biệt chữ hoa chữ thường, viết thường thành chữ hoa. Phần còn lại của URL thường phân biệt chữ hoa chữ
Stephen Ostermiller
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.