web-dev-qa-db-de.com

Kann ich in URLs Sternchen verwenden?

Gibt es Gründe, warum ich in einer URL kein Sternchen (*) verwenden sollte?

Hintergrund:

Mit Sternchen könnte ich diese netten und benutzerfreundlichen (oder was denken Sie?) URLs versehen:

  • example.com/some/folder/search-phrase*
    bedeutet Suche nach Seiten mit Namen, die mit "Suchphrase" beginnen und sich in/some/folder/befinden.

  • example.com/some/**/*search-phrase*
    bedeutet suche nach einer Seite mit "Suchphrase" irgendwo in ihrem Namen.

  • example.com/some/folder/*
    bedeutet alle Seiten in/some/folder/auflisten, anstatt die Seite/some/folder/index anzuzeigen.

12
KajMagnus

Hinweise zur Verwendung von Asterix in URLs

Die Verwendung eines Asterix in Ihrer URL ist wahrscheinlich keine so gute Idee, hauptsächlich weil:

  1. Weder UTF-8 noch ASCII können derzeit einen Asterix bezeichnen.
  2. Er wäre kaum mehr als ein Fleck in einer Standard-Adressleiste des Browsers.
  3. Ich bezweifle, dass es ihm sehr gefallen würde. Und er hat einige ziemlich große Freunde.
  4. Es ist einfach komisch.

Bei Verwendung von Sternchen in URLs

Die Verwendung eines Sternchens (*) in einer URL (und ja, ich weiß, dass Sie das die ganze Zeit gemeint haben) ist auch keine so gute Idee. Weil es ein reserviertes Zeichen ist, wird es nirgendwo anders verwendet; Auch wenn Ihr URL-Schema für Sie benutzerfreundlich erscheint, werden nur wenige darüber nachdenken, es zu versuchen, und es wird wahrscheinlich zu unvorhersehbaren Ergebnissen führen, da die Bedeutung von Platzhaltern in URLs schwer zu erkennen ist. (Ich konnte nicht sagen, was all Ihre Beispiele bedeuteten, bis ich Ihre Beschreibungen gelesen habe.)

Nicht nur das, sondern es könnte auch weitere semantische/sinnvolle Möglichkeiten geben, das zu tun, was Sie beschreiben. Sie können beispielsweise eine Abfragezeichenfolge anhängen und mit den Variablen 'find' und 'where' Ihrer Methode mitteilen, was wo zu finden ist:

Seiten, die mit 'Suchbegriff' in /some/folder/ beginnen:

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

Seiten mit "Suchbegriff" suchen:

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

Um alle Seiten anzuzeigen, würde ich eine separate Methode namens 'all' anstelle einer Abfragezeichenfolge oder einer Platzhaltersyntax verwenden:

example.com/some/folder/all

Die Syntax der Abfragezeichenfolge ist weit häufiger als Sternchen - schauen Sie beispielsweise bei der nächsten Google-Suche in Ihrer Adressleiste nach - und es wird wahrscheinlich auch einfacher zu codieren sein .

Wenn Sie das Aussehen von Abfragezeichenfolgen nicht mögen, können Sie dem Methodennamen den Namen "search" voranstellen und dann die nächsten beiden Blöcke als Variablen "find" und "where" verwenden. z.B. Anstatt von:

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

Du könntest haben:

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

Dann müssen Sie nur noch in Ihrem URL-Pfad nach dem Schlüsselwort "Suche" suchen und die Suchmethode unter Verwendung der nächsten beiden Pfadsegmente als Variablen auslösen.


UPDATE: Ich habe heute meinen ersten Stern in einer URL gefunden. Die neue Oberfläche von archive.org verwendet sie genau so, wie Sie sie beschrieben haben (als Teil einer Suchfunktion), anstelle eines Schlüsselworts "all". z.B.:

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

anstatt

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

Das erste Beispiel gibt archivierte Einträge aus allen Daten für google.com zurück und nicht nur Seiten aus einem bestimmten Datum (zweites Beispiel). Interessanterweise kann ich hier keine Verbindung zur Live-Seite herstellen, da die Stack Exchange-Site das Zeichen * als %2a codiert, wenn es in URLs angezeigt wird, was zu einem 404 von archive.org führt. (Vielleicht ein weiterer Grund, keine Sternchen in URLs zu verwenden.)

Ich denke immer noch, es ist nicht ganz so klar wie "alles", aber wenn Sie nach Beispielen für andere Websites suchen, die Sternchen in ihren URLs verwenden, ist dies die erste, die ich gesehen habe.

15
Nick

Ja, weil es ein reservierter Charakter ist.

Andere reservierte Zeichen

Das Sternchen ("*", ASCII 2A hex) und das Ausrufezeichen ("!", ASCII 21 hex) sind für die Verwendung mit besonderer Bedeutung innerhalb bestimmter Schemata reserviert.

Von hier aus: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html

BEARBEITEN:

Abschnitt 2 über Zeichen wurde umgeschrieben, um zu erläutern, welche Zeichen reserviert sind, wann sie reserviert sind und warum sie reserviert sind, auch wenn sie von der generischen Syntax nicht als Begrenzer verwendet werden. Die Zeichen, deren Dekodierung normalerweise unsicher ist, einschließlich Ausrufezeichen ("!"), Sternchen ("*"), Anführungszeichen ("'") sowie offene und geschlossene Klammern ("(" und ")") wurden in die reservierte Menge verschoben, um die Unterscheidung zwischen reserviert und nicht reserviert zu klären und hoffentlich die häufigste Frage von Schema-Designern zu beantworten.

Von hier aus: http://labs.Apache.org/webarch/uri/rfc/rfc3986.html#modifications

11
Alex