Разрешены ли двоеточия в URL? - PullRequest
17 голосов
/ 15 ноября 2009

Я думал, что использование двоеточий в URI было «незаконно». Затем я увидел, что vimeo.com использует URI, такие как http://www.vimeo.com/tag:sample.

  1. Что вы думаете об использовании двоеточий в URI?
  2. Как мне заставить мой сервер Apache работать с синтаксисом «двоеточие», потому что теперь он выбрасывает «Доступ запрещен!» ошибка при наличии двоеточия в первом сегменте URI?

Ответы [ 3 ]

27 голосов
/ 15 ноября 2009

Двоеточия разрешены в пути URI. Но вы должны быть осторожны, когда пишете относительные пути URI с двоеточием, так как это не разрешено, когда используется так:

<a href="tag:sample">

В этом случае tag будет интерпретироваться как схема URI. Вместо этого вам нужно написать это так:

<a href="./tag:sample">
10 голосов
/ 05 апреля 2010

Также обратите внимание на разницу между Apache в Linux и Windows . Apache в Windows почему-то не позволяет использовать двоеточия в первой части URL. Однако у Linux нет проблем с этим.

3 голосов
/ 07 апреля 2017

Разрешены ли двоеточия в URL?

Да, если только он не находится в первом сегменте пути ссылки относительного пути

Так, например, у вас может быть такой URL:

И вы можете использовать его как абсолютный URL или несколько относительных вариантов:

<a href="https://en.wikipedia.org/wiki/Template:Welcome">Welcome Template</a>
<a href="/wiki/Template:Welcome">Welcome Template</a>
<a href="wiki/Template:Welcome">Welcome Template</a>

Но это было бы неверно:

<a href="Template:Welcome">Welcome Template</a>

потому что "Шаблон" здесь будет ошибочно принят за схему протокола. Вы должны использовать:

<a href="./Template:Welcome">Welcome Template</a>

использовать относительную ссылку со страницы того же уровня в иерархии.

Спецификация

См. RFC 3986, раздел 3.3:

Компонент пути содержит данные, обычно организованные в иерархическом порядке. форма, которая вместе с данными в неиерархическом компоненте запроса (Раздел 3.4), служит для идентификации ресурса в рамках Схема URI и полномочия по присвоению имен (если есть). Путь окончен по первому знаку вопроса ("?") или знаку числа ("#") или к концу URI.

Если URI содержит компонент полномочий, тогда компонент пути должен быть либо пустым, либо начинаться с символа косой черты ("/"). Если URI не содержит компонент полномочий, тогда путь не может начинаться с двумя символами косой черты ("//"). Кроме того, ссылка на URI (Раздел 4.1) может быть ссылкой на относительный путь, и в этом случае Первый сегмент пути не может содержать двоеточие (":"). ABNF требуется пять отдельных правил для устранения неоднозначности этих случаев, только одно из которая будет соответствовать подстроке пути в данной ссылке URI. Мы используйте общий термин «компонент пути» для описания подстроки URI сопоставляется парсером с одним из этих правил. [выделение добавлено]

Пример URL, который использует двоеточие:

...