Bisakah saya menggunakan tanda bintang di URL?

13

Apakah ada alasan saya tidak boleh menggunakan tanda bintang ( *) di URL?

Latar Belakang:

Dengan tanda bintang, saya bisa memberikan URL yang bagus dan ramah pengguna ini (atau bagaimana menurut Anda ??):

  • example.com/some/folder/search-phrase*
    berarti mencari halaman dengan nama yang dimulai dengan "frase pencarian", yang terletak di / some / folder / .

  • example.com/some/**/*search-phrase*
    berarti mencari halaman apa pun dengan "frase pencarian" di mana saja dalam namanya .

  • example.com/some/folder/*
    berarti daftar semua halaman di / beberapa / folder / (daripada menampilkan / beberapa / folder / halaman indeks) .

KajMagnus
sumber
1
lih. pertanyaan SO serupa
Su '
1
Berikut pertanyaan SO serupa lainnya: Bisakah URL memiliki tanda bintang? . Saya tidak menemukan mereka, karena saya mengeja Asterisk dengan Asterix: - / sampai saya dikoreksi (lihat jawaban Asterix di bawah :-)).
KajMagnus
@KajMagnus Saya menemukan situs untuk pertama kalinya hari ini menggunakan tanda bintang di URL mereka. Lihat jawaban saya yang diperbarui di bawah ini.
Nick

Jawaban:

16

Saat menggunakan Asterix di URL

Menggunakan Asterix di URL Anda mungkin bukan ide bagus, terutama karena:

  1. UTF-8 atau ASCII saat ini tidak dapat menunjukkan Asterix.
  2. Dia akan sedikit lebih dari noda di bilah alamat browser standar.
  3. Saya ragu dia akan sangat menyukainya. Dan dia punya beberapa teman yang cukup besar.
  4. Ini aneh.

Saat menggunakan tanda bintang dalam URL

Menggunakan tanda bintang (*) di URL (dan, ya, saya tahu itu yang Anda maksud selama ini) juga bukan ide yang bagus. Karena itu karakter yang dicadangkan, itu tidak digunakan di tempat lain; meskipun skema URL Anda tampaknya ramah bagi Anda, beberapa orang akan berpikir untuk mencobanya, dan kemungkinan akan memberikan hasil yang tidak terduga karena arti dari wildcard dalam URL sulit dibedakan. (Saya tidak bisa mengatakan apa arti semua contoh Anda sampai saya membaca deskripsi Anda.)

Bukan hanya itu, tetapi mungkin ada beberapa cara yang lebih semantik / bermakna untuk melakukan apa yang Anda gambarkan. Misalnya, Anda bisa menambahkan string kueri dan menggunakan variabel 'temukan' dan 'di mana' untuk memberi tahu metode Anda apa yang harus dicari di mana:

Temukan halaman yang dimulai dengan 'frasa pencarian' di /some/folder/:

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

Temukan halaman dengan 'frasa pencarian' di mana saja:

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

Untuk menampilkan semua halaman, saya akan menggunakan metode terpisah yang disebut 'semua' alih-alih sintaks string atau wildcard:

example.com/some/folder/all

Sintaks string kueri jauh lebih umum daripada tanda bintang - lihat di bilah alamat Anda lain kali saat Anda melakukan pencarian Google, misalnya - dan kemungkinan kode juga akan lebih mudah.

Terakhir, jika Anda tidak menyukai tampilan string kueri, Anda bisa menambahkan nama metode yang disebut 'pencarian' dan kemudian menggunakan dua blok berikutnya sebagai variabel 'temukan' dan 'di mana'. misalnya Alih-alih:

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

Kamu bisa saja:

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

Kemudian, Anda hanya perlu memeriksa kata kunci 'pencarian' di jalur URL Anda, dan memicu metode pencarian Anda menggunakan dua segmen jalur berikutnya sebagai variabel.


PEMBARUAN: Saya menemukan tanda bintang pertama saya di URL hari ini. Antarmuka archive.org baru menggunakannya persis seperti yang Anda gambarkan (sebagai bagian dari fitur pencarian), sebagai ganti kata kunci 'semua'. misalnya:

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

dari pada

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

Contoh pertama mengembalikan cantuman yang diarsipkan dari semua tanggal untuk google.com, bukan hanya halaman dari tanggal tertentu (contoh kedua). Menariknya, saya tidak dapat menautkan ke halaman langsung di sini, karena situs Stack Exchange menyandikan *karakter seperti %2aketika muncul di URL, yang menghasilkan 404 dari archive.org. (Mungkin alasan lain untuk tidak menggunakan tanda bintang di URL.)

Saya masih berpikir itu tidak sejelas 'semua', tetapi, jika Anda mencari contoh situs lain yang mengadopsi tanda bintang di URL mereka, itu yang pertama saya lihat.

Nick
sumber
Wrt Asterix : Apa! Apakah Anda pikir saya maksudkan "Asterisk"?
KajMagnus
Wrt Asterix : Oh itu sebabnya saya tidak menemukan halaman yang relevan di StackOverflow atau Webmaster. Sekarang saya menemukan 2 halaman terkait di SO: Mengizinkan asterisk di URL dan Bisakah URL memiliki asterisk? - terima kasih :-)
KajMagnus
Terima kasih atas info tentang bagaimana pengguna akhir mungkin akan menerima tanda bintang. Sekarang saya kemungkinan besar akan lebih memilih string kueri.
KajMagnus
(Kalau-kalau ada yang bertanya-tanya tentang referensi ke Asterix: Saya salah mengeja Asterisk, saya pikir itu Asterix :-))
KajMagnus
11

Ya, karena itu karakter yang dilindungi.

Karakter cadangan lainnya

Tanda bintang ("*", ASCII 2A hex) dan tanda seru ("!", ASCII 21 hex) dicadangkan untuk digunakan sebagai memiliki signifikansi khusus dalam skema tertentu.

Dari sini: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

EDIT:

Bagian 2, tentang karakter, telah ditulis ulang untuk menjelaskan karakter apa yang dicadangkan, ketika mereka dicadangkan, dan mengapa mereka dicadangkan, bahkan ketika mereka tidak digunakan sebagai pembatas oleh sintaksis umum. Karakter tanda yang biasanya tidak aman untuk didekodekan, termasuk tanda seru ("!"), Tanda bintang ("*"), tanda kutip tunggal ("'"), dan buka dan tutup tanda kurung ("(" dan ")") , telah dipindahkan ke set yang dipesan untuk menjelaskan perbedaan antara yang dipesan dan yang tidak dilindungi dan, semoga, untuk menjawab pertanyaan yang paling umum dari perancang skema.

Dari sini: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifications

Alex
sumber
Hmm, *adalah karakter pendiam, ya. Tetapi ini adalah sub-pembatas , dan ketika saya membaca spesifikasi URI, bagi saya tampaknya tidak masalah untuk menggunakan sub-pembatas dalam cara khusus aplikasi, dalam komponen jalur URI . - Apakah tidak ini berarti OK itu untuk digunakan *(dan juga misalnya @, :, +, ,) dengan cara yang saya lakukan?
KajMagnus
Saya bingung dengan frasa " dicadangkan untuk digunakan sebagai memiliki arti khusus dalam skema tertentu ". Bisakah saya tidak mendefinisikan skema khusus aplikasi saya sendiri? Mungkinkah itu niat, dengan sub-pembatasan, bahwa aplikasi web menggunakannya dalam cara spesifik aplikasi web?
KajMagnus
Untuk apa nilainya, di sini seseorang mengatakan Wikipedia mengizinkan tanda bintang di URL dan orang lain mengatakan tidak apa-apa: Bisakah URL memiliki tanda bintang?
KajMagnus
Anda bertanya apakah Anda harus menggunakannya, bukan apakah secara teknis memungkinkan atau tidak, dan gagasan umumnya adalah kecuali Anda tahu persis apa yang Anda lakukan, Anda tidak boleh menggunakannya.
Alex
Saya tidak tahu apakah saya setuju dengan jawaban umum itu. Cara untuk mempelajari hal-hal baru, adalah melakukan sesuatu yang Anda tidak tahu cara kerjanya, dan kemudian Anda akan belajar dan mencari tahu. Bagaimana masa depan kita jika orang-orang pada umumnya melakukan hanya hal-hal yang mereka tahu persis bagaimana mereka bekerja? (Ini adalah versi pra-alfa yang akan saya rilis, jadi ini tidak dimaksudkan untuk produksi :-)) - Terima kasih atas info dan
tautannya