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

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

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

Ответы

Ответ 1

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

<a href="tag:sample">

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

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

Ответ 2

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

Ответ 3

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

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

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

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

<a href="#" onclick="location.href='https://en.wikipedia.org/wiki/Template:Welcome'; return false;">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, который использует двоеточие: