如何构造PHP的内容包括在非安全(http://)和安全(https://)区域以及跨多个目录使用?

时间:2012-01-31 13:57:28

标签: php https hyperlink include include-path

我有一个包含链接和图片的页脚文件。该文件在我的主页和多个目录中使用。在用户登录后,它也会在我网站的安全部分(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 个答案:

答案 0 :(得分:5)

只需使用//example.com/foo.blah

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

很明显,HTTP是协议,但存在其他协议,如GOPHER,HTTPS,FTP等......

您可以直接链接到gopher://example.com,而不是使用gopher网址//example.com,协议可以在没有它的情况下运行。如果要从HTTPS链接到HTTP内容,则应指定协议。

从长远来看,这可能很有趣,例如,如果另一个协议出现与HTTP几乎相同,(例如,谷歌试图制作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"的问题已被多次次回答。

答案 1 :(得分:2)

使用方案相对URI。

//example.com/foo/bar/

这将保留http或https。