Разрешены ли двоеточия в URL-адресах?
Я думал, что использование двоеточий в URIs было "незаконным". Потом я увидел, что vimeo.com использует URIs как http://www.vimeo.com/tag:sample.
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, который использует двоеточие: