Могу ли я использовать звездочки в URL?

13

Есть ли причины, по которым я не должен использовать звездочку ( *) в URL?

Фон:

С помощью звездочек я мог бы предоставить эти приятные и удобные (или как вы думаете, ??) URL-адреса:

  • example.com/some/folder/search-phrase*
    означает поиск страниц с именами, начинающимися с «search-фразу», расположенными в / some / folder / .

  • example.com/some/**/*search-phrase*
    означает поиск по любой странице с поисковой фразой в любом месте ее имени .

  • example.com/some/folder/*
    означает список всех страниц в / some / folder / (вместо отображения страницы / some / folder / index) .

KajMagnus
источник
1
Вот еще один похожий вопрос: может ли URL иметь звездочку? , Я не нашел их, потому что я записал Asterisk с помощью Asterix: - /, пока я не исправлюсь (см. Ответ Asterix ниже :-)).
КаджМагнус
@KajMagnus Сегодня я впервые нашел сайт, используя звездочки в своих URL. Смотрите мой обновленный ответ ниже.
Ник

Ответы:

16

Об использовании Asterix в URL

Использование Asterix в вашем URL, вероятно, не очень хорошая идея, в основном потому, что:

  1. Ни UTF-8, ни ASCII в настоящее время не могут обозначать Asterix.
  2. Он был бы чуть более чем пятном в стандартной адресной строке браузера.
  3. Я сомневаюсь, что ему бы очень понравилось. И у него есть довольно большие друзья.
  4. Это просто странно.

Об использовании звездочек в URL

Использование звездочки (*) в URL (и, да, я знаю, что вы имели в виду все это время) также не такая уж хорошая идея. Поскольку это зарезервированный персонаж, он больше нигде не используется; даже если ваша схема URL-адресов кажется вам удобной, мало кто ее попробует, и она может привести к непредсказуемым результатам, потому что значение подстановочных знаков в URL трудно различить. (Я не мог сказать, что значат все ваши примеры, пока не прочитал ваши описания.)

Не только это, но может быть несколько более смысловых / значимых способов сделать то, что вы описываете. Например, вы можете добавить строку запроса и использовать переменные 'find' и 'where', чтобы сообщить своему методу, что искать где:

Найти страницы, начинающиеся с «поисковая фраза» в /some/folder/:

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

Найти страницы с «поисковой фразой» в любом месте:

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

Чтобы показать все страницы, я бы использовал отдельный метод под названием «все» вместо строки запроса или подстановочного синтаксиса:

example.com/some/folder/all

Синтаксис строки запроса встречается гораздо чаще, чем звездочки - посмотрите в адресной строке, например, в следующий раз, когда вы выполните поиск в Google, - и вам, вероятно, будет проще его кодировать.

Наконец, если вам не нравится внешний вид строк запроса, вы можете добавить имя метода с именем 'search', а затем использовать следующие два блока в качестве переменных 'find' и 'where'. например, вместо:

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

Вы могли бы иметь:

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

Затем вам просто нужно проверить ключевое слово «search» в вашем URL-пути и активировать метод поиска, используя следующие два сегмента пути в качестве переменных.


ОБНОВЛЕНИЕ: я нашел свою первую звездочку в URL сегодня. Новый интерфейс archive.org использует его в точности так, как вы его описали (как часть функции поиска), вместо ключевого слова «all». например:

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

вместо того

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

Первый пример возвращает архивированные списки со всех дат для google.com, а не только страницы с определенной датой (второй пример). Интересно, что я не могу ссылаться на живую страницу здесь, потому что сайт Stack Exchange кодирует *символ так, как %2aон появляется в URL, что приводит к 404 из archive.org. (Возможно, еще одна причина не использовать звездочки в URL.)

Я все еще думаю, что это не так ясно, как «все», но, если вы ищете примеры других сайтов, использующих звездочки в своих URL, это первый, который я видел.

Ник
источник
В отношении Астерикса : Что! Вы думаете, я имел в виду "Звездочка"?
КаджМагнус
Wrt Asterix : О, вот почему я не нашел соответствующих страниц в StackOverflow или веб-мастерах. Теперь я нашел 2 связанные страницы на SO: разрешение звездочки в URL и может ли URL иметь звездочку? - спасибо :-)
КайМагнус
Спасибо за информацию о том, как конечные пользователи, вероятно, будут воспринимать звездочки. Теперь я, скорее всего, предпочитаю строки запроса.
КаджМагнус
(В случае, если кто-то задается вопросом об упоминании Asterix: я написал Asterisk с ошибкой, я подумал, что это Asterix :-))
KajMagnus
11

Да, потому что это зарезервированный персонаж.

Другие зарезервированные персонажи

Звездочка ("*", 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

Alex
источник
Хм, *это зарезервированный персонаж, да. Но это под-разделитель , и когда я читаю спецификацию URI, мне кажется, что нормально использовать под-разделители для конкретного приложения, в компоненте пути URI . - Разве это не означает , что это нормально для использования *(а также , например @, :, +, ,) в том , как я сделал?
КаджМагнус
Меня смущает фраза « зарезервированы для использования как имеющие особое значение в конкретных схемах ». Могу ли я не определить собственную схему для конкретного приложения? Может ли это быть намерением, с подэлементами, что веб-приложения используют их определенным образом?
КаджМагнус
Для чего это стоит, здесь кто-то говорит, что Википедия разрешает звездочки в URL, а кто-то говорит, что все в порядке: может ли URL иметь звездочку?
КаджМагнус
Вы спросили, следует ли вам его использовать, а не технически возможно это или нет, и общая идея заключается в том, что, если вы точно не знаете, что делаете, вы не должны его использовать.
Алекс
Я не знаю, согласен ли я с этим общим ответом. Способ узнать что-то новое - это сделать то, что вы не знаете, как это работает, и тогда вы узнаете и узнаете. Каково было бы наше будущее, если бы люди вообще делали только то, что они точно знали, как они работали? (Это пре-альфа-версия, которую я буду выпускать, поэтому она не предназначена для производства :-)) - Спасибо за информацию и ссылки в любом случае :-)
KajMagnus