Tôi có thể sử dụng dấu hoa thị trong URL không?


12

Có bất kỳ lý do nào tôi không nên sử dụng dấu hoa thị ( *) trong URL không?

Lý lịch:

Với dấu hoa thị, tôi có thể cung cấp các URL đẹp và thân thiện với người dùng (hoặc bạn nghĩ gì ??):

  • example.com/some/folder/search-phrase*
    có nghĩa là tìm kiếm các trang có tên bắt đầu bằng "cụm từ tìm kiếm", nằm trong / some / thư mục / .

  • example.com/some/**/*search-phrase*
    có nghĩa là tìm kiếm bất kỳ trang nào có "cụm từ tìm kiếm" ở bất cứ đâu trong tên của nó .

  • example.com/some/folder/*
    có nghĩa là liệt kê tất cả các trang trong / some / thư mục / (thay vì hiển thị trang / some / thư mục / chỉ mục) .



1
Đây là một câu hỏi SO tương tự khác: URL có thể có dấu hoa thị không? . Tôi đã không tìm thấy chúng, vì tôi đánh vần Asterisk bằng Asterix: - / cho đến khi tôi được sửa (xem câu trả lời của Asterix bên dưới :-)).
KajMagnus

@KajMagnus Tôi đã tìm thấy một trang web lần đầu tiên ngày hôm nay bằng cách sử dụng dấu hoa thị trong URL của họ. Xem câu trả lời cập nhật của tôi dưới đây.
Nick

Câu trả lời:


16

Đang sử dụng Asterix trong URL

Sử dụng Asterix trong URL của bạn có lẽ không phải là một ý tưởng tuyệt vời, phần lớn là do:

  1. Cả UTF-8 hoặc ASCII hiện không thể biểu thị Asterix.
  2. Anh ta sẽ ít hơn một vết bẩn trong thanh địa chỉ trình duyệt tiêu chuẩn.
  3. Tôi nghi ngờ anh ấy rất thích nó. Và anh ấy có một số người bạn khá lớn.
  4. Nó thật kỳ lạ.

Sử dụng dấu hoa thị trong URL

Sử dụng dấu hoa thị (*) trong một URL (và, vâng, tôi biết đó là tất cả những gì bạn muốn nói) cũng không phải là một ý tưởng tuyệt vời. Bởi vì nó là một nhân vật dành riêng, nó không được sử dụng ở bất kỳ nơi nào khác; mặc dù lược đồ URL của bạn có vẻ thân thiện với bạn, nhưng ít người sẽ nghĩ dùng thử và có thể sẽ cho kết quả không thể đoán trước vì ý nghĩa của ký tự đại diện trong URL rất khó nhận ra. (Tôi không thể nói tất cả các ví dụ của bạn có nghĩa là gì cho đến khi tôi đọc mô tả của bạn.)

Không chỉ vậy, nhưng có thể có một số cách ngữ nghĩa / ý nghĩa hơn để làm những gì bạn mô tả. Ví dụ: bạn có thể nối thêm chuỗi truy vấn và sử dụng biến 'find' và 'where' để cho phương thức của bạn biết tìm gì ở đâu:

Tìm các trang bắt đầu bằng 'cụm từ tìm kiếm' trong /some/folder/:

example.com/some/folder/?find=search-phrase&where=start

Tìm các trang có 'cụm từ tìm kiếm' ở bất cứ đâu:

example.com/some/?find=search-phrase&where=anywhere

Để hiển thị tất cả các trang, tôi sẽ sử dụng một phương thức riêng gọi là 'tất cả' thay vì chuỗi truy vấn hoặc cú pháp ký tự đại diện:

example.com/some/folder/all

Cú pháp chuỗi truy vấn là xa phổ biến hơn dấu hoa thị - nhìn vào thanh địa chỉ của bạn lần sau khi bạn thực hiện tìm kiếm Google, ví dụ - và nó có thể sẽ dễ dàng hơn để mã quá.

Cuối cùng, nếu bạn không thích giao diện của chuỗi truy vấn, bạn có thể đặt trước một tên phương thức gọi là 'tìm kiếm' và sau đó sử dụng hai khối tiếp theo làm biến 'tìm' và 'trong đó'. ví dụ: Thay vì:

example.com/some/folder/?find=search-phrase&where=start

Bạn có thể có:

example.com/some/folder/search/search-phrase/start

Sau đó, bạn chỉ cần kiểm tra từ khóa 'tìm kiếm' trong đường dẫn URL của bạn và kích hoạt phương thức tìm kiếm của bạn bằng cách sử dụng hai phân đoạn đường dẫn tiếp theo làm biến.


CẬP NHẬT: Tôi tìm thấy dấu sao đầu tiên của mình trong một URL ngày hôm nay. Giao diện archive.org mới đang sử dụng chính xác như bạn mô tả (như một phần của tính năng tìm kiếm), thay cho từ khóa 'tất cả'. ví dụ:

http://wayback.archive.org/web/*/http://google.com

thay vì

http://web.archive.org/web/20040214050058/http://www.google.com/

Ví dụ đầu tiên trả về danh sách lưu trữ từ tất cả các ngày cho google.com, thay vì chỉ các trang từ một ngày nhất định (ví dụ thứ hai). Thật thú vị, tôi không thể liên kết đến trang trực tiếp ở đây, vì trang web Stack Exchange mã hóa *ký tự như %2akhi nó xuất hiện trong các URL, dẫn đến 404 từ archive.org. (Có lẽ một lý do khác để không sử dụng dấu hoa thị trong URL.)

Tôi vẫn nghĩ rằng nó không hoàn toàn rõ ràng như 'tất cả', nhưng, nếu bạn đang tìm kiếm ví dụ về các trang web khác áp dụng dấu hoa thị trong URL của họ, thì đó là trang đầu tiên tôi nhìn thấy.


Wrt Asterix : Cái gì! Bạn có nghĩ rằng tôi có nghĩa là "Asterisk"?
KajMagnus

Wrt Asterix : Ồ đó là lý do tại sao tôi không tìm thấy bất kỳ trang nào có liên quan trên StackOverflow hoặc Webmaster. Bây giờ tôi đã tìm thấy 2 trang liên quan trên SO: Cho phép dấu hoa thị trong URLURL có thể có dấu hoa thị không? - cảm ơn :-)
KajMagnus

Cảm ơn thông tin về cách người dùng cuối có thể cảm nhận được các dấu sao. Bây giờ tôi rất có thể sẽ thích chuỗi truy vấn thay thế.
KajMagnus

(Trong trường hợp bất kỳ ai thắc mắc về tham chiếu đến Asterix: Tôi đã viết sai chính tả Asterisk, tôi nghĩ đó là Asterix :-))
KajMagnus

11

Vâng, bởi vì đó là một nhân vật dành riêng.

Nhân vật dành riêng khác

Dấu hoa thị ("*", ASCII 2A hex) và dấu chấm than ("!", ASCII 21 hex) được dành riêng để sử dụng vì có ý nghĩa đặc biệt trong các sơ đồ cụ thể.

Từ đây: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

BIÊN TẬP:

Phần 2, trên các ký tự, đã được viết lại để giải thích các ký tự được bảo lưu, khi chúng được bảo lưu và tại sao chúng được bảo lưu, ngay cả khi chúng không được sử dụng làm dấu phân cách theo cú pháp chung. Các ký tự đánh dấu thường không an toàn để giải mã, bao gồm dấu chấm than ("!"), Dấu hoa thị ("*"), trích dẫn đơn ("'") và dấu ngoặc đơn mở và đóng ("(" và ")") , đã được chuyển đến tập hợp dành riêng để làm rõ sự khác biệt giữa dành riêng và không được giám sát và, hy vọng, để trả lời câu hỏi phổ biến nhất của các nhà thiết kế sơ đồ.

Từ đây: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifying


Hmm, *là một nhân vật dành riêng, vâng. Nhưng đó là một dấu phân cách phụ và khi tôi đọc thông số URI, có vẻ như tôi sử dụng các phân định phụ theo cách cụ thể của ứng dụng, trong thành phần đường dẫn của URI . - không này có nghĩa là nó OK để sử dụng *(và cũng có thể ví dụ như @, :, +, ,) theo cách tôi đã làm?
KajMagnus

Tôi bối rối bởi cụm từ " được dành riêng để sử dụng như có ý nghĩa đặc biệt trong các chương trình cụ thể ". Tôi không thể xác định chương trình cụ thể ứng dụng của riêng tôi? Có thể đó là ý định, với các phân định phụ, rằng các ứng dụng web sử dụng chúng theo cách cụ thể của ứng dụng web?
KajMagnus

Về giá trị của nó, ở đây có người nói Wikipedia cho phép dấu hoa thị trong URL và người khác nói rằng nó ổn: URL có thể có dấu hoa thị không?
KajMagnus

Bạn hỏi liệu bạn có nên sử dụng nó không, về mặt kỹ thuật có thể hay không, và ý tưởng chung là trừ khi bạn biết chính xác những gì bạn đang làm, bạn không nên sử dụng nó.
Alex

Tôi không biết nếu tôi đồng ý với câu trả lời chung chung đó. Một cách để học những thứ mới, là làm một cái gì đó mà bạn không biết nó hoạt động như thế nào, sau đó bạn sẽ học và tìm hiểu. Tương lai của chúng ta sẽ thế nào nếu mọi người nói chung chỉ làm những việc mà họ biết chính xác họ đang làm việc như thế nào? (Đây là phiên bản tiền alpha mà tôi sẽ phát hành, vì vậy nó không có nghĩa là để sản xuất :-)) - Cảm ơn thông tin và liên kết dù sao :-)
KajMagnus
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.