Разрешены ли двоеточия в 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, который использует двоеточие: