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