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

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

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

Похоже, что для удовлетворения моего первого требования)(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 ]

5 голосов
/ 31 января 2012

Просто используйте //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" ответили много раз.

2 голосов
/ 31 января 2012

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

//example.com/foo/bar/

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

...