Как структурировать содержимое PHP-контента для использования как в незащищенных (http://), так и в защищенных (https://) областях, а также в нескольких каталогах?

У меня есть файл нижнего колонтитула, который содержит ссылки и изображения. Этот файл используется на моей главной домашней странице и в нескольких каталогах. Он также используется в защищенной части моего сайта (https://) после входа пользователя.

Каков наилучший способ организовать ссылки таким образом, чтобы (1) они могли использоваться в незащищенной (http://) и защищенной (https://) областях моего сайта, а (2) также иметь возможность использовать include в разных каталогах на моем сайте?

Кажется, что для того, чтобы удовлетворить мое первое требование (1), мне пришлось бы использовать относительные ссылки; однако, чтобы удовлетворить мое второе требование (2), мне нужно было бы использовать абсолютные ссылки.

Любая помощь, которую вы могли бы оказать, была бы великолепна!

<div id="footer">
    <a href="http://www.sample-link.com" target="_blank"> 
        <img id="sample-image" src="http://<? print $_SERVER['SERVER_NAME'] ?>/media/sample-image.png" /> 
    </a>
</div>

2 ответа

Решение

Просто используйте //example.com/foo.blah,

<img id="sample-image" src="//<? print $_SERVER['SERVER_NAME'] ?>/media/sample-image.png" />

Совершенно очевидно, что HTTP - это протокол, но существуют и другие протоколы, такие как GOPHER, HTTPS, FTP и т. Д.

Вместо того, чтобы быть на URL суслика gopher://example.com Вы можете просто сослаться на //example.com и протокол будет работать без него. Если вы хотите связать HTTP-контент с HTTPS, вы должны указать протокол.

Это может быть интересно в долгосрочной перспективе, например, если появится другой протокол, который работает почти так же, как HTTP (например, Google пытается сделать spdy://) вам придется обновить весь ваш код. Используйте конкретный протокол, когда вам необходимо получить контент из этого протокола, и вы можете избежать этой проблемы через 5 лет.

Относительные URL-адреса описаны в RFC для URL-адресов, RFC3986:

http://tools.ietf.org/html/rfc3986

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" ответили много раз.

Используйте схему относительных URI.

//example.com/foo/bar/

Это сохранит http или https.

Другие вопросы по тегам