URLにアスタリスク(*
)を使用しない理由はありますか?
背景:
アスタリスクを使用すると、これらのニースでユーザーフレンドリーな(またはあなたはどう思いますか?)URLを提供できます。
example.com/some/folder/search-phrase*
意味/ some/folder /にある「search-phrase」で始まる名前のページを検索。
example.com/some/**/*search-phrase*
は、名前に「search-phrase」が含まれるページを検索するを意味します。
example.com/some/folder/*
は/ some/folder /のすべてのページを一覧表示する(/ some/folder/indexページを表示するのではなく)。
URLで Asterix を使用することは、おそらくそれほど素晴らしいアイデアではないでしょう。
URLでアスタリスク(*)を使用すること(そして、もちろん、これがあなたがずっと意図していたことだとわかっています)も、それほど素晴らしいアイデアではありません。 予約文字 であるため、他の場所では使用されません。 URLスキームはユーザーにとって使いやすいように見えますが、試してみる人はほとんどいません。URLのワイルドカードの意味を判別するのは難しいため、予測できない結果をもたらす可能性があります。 (あなたの説明を読むまで、あなたの例のすべてが何を意味するかわかりませんでした。)
それだけでなく、あなたが説明したことを行うためのいくつかの意味論的/意味のある方法があるかもしれません。たとえば、クエリ文字列を追加し、「find」変数と「where」変数を使用して、どこで何を検索するかをメソッドに伝えることができます。
/some/folder/
で「検索フレーズ」で始まるページを検索:
example.com/some/folder/?find=search-phrase&where=start
「検索フレーズ」を含むページをどこでも検索:
example.com/some/?find=search-phrase&where=anywhere
すべてのページを表示するには、クエリ文字列またはワイルドカード構文の代わりに、「all」という別のメソッドを使用します。
example.com/some/folder/all
クエリ文字列の構文は、アスタリスクよりもfarより一般的です(たとえば、Google検索を次に実行するときにアドレスバーを確認します)。コーディングも簡単です。 。
最後に、クエリ文字列の外観が気に入らない場合は、「search」というメソッド名を追加し、次の2つのブロックを「find」変数と「where」変数として使用できます。例えばの代わりに:
example.com/some/folder/?find=search-phrase&where=start
あなたが持つことができます:
example.com/some/folder/search/search-phrase/start
次に、URLパスの「search」キーワードを確認し、次の2つのパスセグメントを変数として使用して検索メソッドをトリガーするだけです。
UPDATE:今日URLで最初のアスタリスクを見つけました。新しいarchive.orgインターフェースは、「すべて」のキーワードの代わりに、(検索機能の一部として)説明したとおりにそれを使用しています。例えば。:
http://wayback.archive.org/web/*/http://google.com
の代わりに
http://web.archive.org/web/20040214050058/http://www.google.com/
最初の例では、特定の日付のページだけではなく、google.comのall日付からアーカイブされたリストを返します(2番目の例)。興味深いことに、Stack ExchangeサイトはURLに表示されるときに*
文字を%2a
としてエンコードし、archive.orgから404が生成されるため、ここでライブページにリンクできません。 (おそらく、URLにアスタリスクを使用しない別の理由。)
私はまだ「すべて」ほど明確ではないと思いますが、URLにアスタリスクを採用している他のサイトの例を探しているなら、それは私が最初に見たものです。
はい、予約文字ですから。
その他の予約文字
アスタリスク( "*"、ASCII 2A hex)および感嘆符( "!"、ASCII 21 hex)は、特定のスキーム内で特別な意味を持つものとして使用するために予約されています。
ここから: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html
編集:
文字に関するセクション2は、一般的な構文で区切り文字として使用されていない場合でも、予約される文字、予約される文字、予約される理由を説明するために書き直されました。 感嘆符( "!")、アスタリスク( "*")、一重引用符( "'")、開き括弧と閉じ括弧など、通常はデコードするのに安全ではないマーク文字( "("および ")")、予約済みセットと未予約の区別を明確にするために、予約済みセットに移動されました。そして、できれば、スキーム設計者の最も一般的な質問に答えるようになりました。
ここから: http://labs.Apache.org/webarch/uri/rfc/rfc3986.html#modifications