Есть ли причины, по которым я не должен использовать звездочку ( *
) в 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) .
Ответы:
Об использовании Asterix в URL
Использование Asterix в вашем URL, вероятно, не очень хорошая идея, в основном потому, что:
Об использовании звездочек в 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, это первый, который я видел.
источник
Да, потому что это зарезервированный персонаж.
Отсюда: http://www.w3.org/Addressing/URL/4_URI_Recommentations.html
РЕДАКТИРОВАТЬ:
Отсюда: http://labs.apache.org/webarch/uri/rfc/rfc3986.html#modifications
источник
*
это зарезервированный персонаж, да. Но это под-разделитель , и когда я читаю спецификацию URI, мне кажется, что нормально использовать под-разделители для конкретного приложения, в компоненте пути URI . - Разве это не означает , что это нормально для использования*
(а также , например@
,:
,+
,,
) в том , как я сделал?