Просто используйте //example.com/foo.blah
.
<img id="sample-image" src="//<? print $_SERVER['SERVER_NAME'] ?>/media/sample-image.png" />
Совершенно очевидно, что HTTP - это протокол, но существуют и другие протоколы, такие как GOPHER, HTTPS, FTP и т. Д. *
Вместо того, чтобы указывать URL-адрес gopher gopher://example.com
, вы можете просто сослаться на //example.com
, и протокол будет работать без него. Если вы хотите связать HTTP-контент с HTTPS, вы должны указать протокол.
Это может быть интересно в долгосрочной перспективе, например, если появится другой протокол, который работает почти так же, как HTTP, (например, Google пытается сделать spdy://
), вам придется обновить весь ваш код , Используйте конкретный протокол, когда вам необходимо получить контент из этого протокола, и вы можете избежать этой проблемы через 5 лет.
Относительные URL-адреса описаны в RFC для URL-адресов, RFC3986 :
http://tools.ietf.org/html/rfc3986#section-4.2
4,2. Относительная ссылка
Относительная ссылка использует преимущества иерархического синтаксиса
(Раздел 1.2.3) для выражения ссылки на URI относительно пространства имен
другого иерархического URI.
relative-ref = relative-part [ "?" query ] [ "#" fragment ]
relative-part = "//" authority path-abempty
/ path-absolute
/ path-noscheme
/ path-empty
URI, на который ссылается относительная ссылка, также известная как цель
URI, получается путем применения алгоритма эталонного разрешения
Раздел 5.
Относительная ссылка, которая начинается с двух символов косой черты, называется
ссылка на сетевой путь; такие ссылки используются редко.
Относительная ссылка, которая начинается с одного символа косой черты
называется ссылкой на абсолютный путь. Относительная ссылка, которая делает
не начинается с символа косой черты и называется ссылкой на относительный путь.
Сегмент пути, содержащий двоеточие (например, «this: that»)
не может использоваться в качестве первого сегмента ссылки относительного пути, так как
это будет ошибочно принято за название схемы. Такой сегмент должен быть
предшествующий точечный сегмент (например, "./this:that"), чтобы сделать
ссылка на путь.
Чтобы понять, что они подразумевают под «путем», «авторитетом» и «схемой», обратитесь к диаграмме в том же RFC:
foo://example.com:8042/over/there?name=ferret#nose
\_/ \______________/\_________/ \_________/ \__/
| | | | |
scheme authority path query fragment
| _____________________|__
/ \ / \
urn:example:animal:ferret:nose
Все это при условии, что вы работаете с несколькими доменами, так как на вопросы о <img src="./relative/url/foo.png">
или img src="/absolute/path/while/domain/relative/foo.png"
ответили много раз.