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) .
Jawaban:
Saat menggunakan Asterix di URL
Menggunakan Asterix di URL Anda mungkin bukan ide bagus, terutama karena:
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%2a
ketika 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.
sumber
Ya, karena itu karakter yang dilindungi.
Dari sini: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html
EDIT:
Dari sini: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifications
sumber
*
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?