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