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

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

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

3 ответов


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

<a href="tag:sample">

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

<a href="./tag:sample">

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


разрешены ли двоеточия в 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:

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

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

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