我见过this question,但那是在回答其他问题。
今天,我遇到了一个奇怪的问题(至少对我而言)。问题是,我在我的网站上有这个代码...
<link rel="icon" type="image/png" sizes="16x16" href="~/img/TT_favicon_16px.png" />
几乎在网站的所有页面上都返回了favicon,但在网站的其中一个页面上没有。
我只是想象(无中生有)去掉波浪标志,它开始在网站上的所有页面上工作。
<link rel="icon" type="image/png" sizes="16x16" href="/img/TT_favicon_16px.png" />
这引起了我的好奇心,我想了解这两者之间有什么区别......
这是语境。
假设当前页面的URL是http://example.com/foo/bar.html
。
从斜杠开始的绝对路径链接(如/quux/grault.html
)将替换整个路径,只留下服务器:http://example.com/quux/grault.html
。
相对路径链接,不是以斜杠开头,如fred/baz.html
,将附加到路径的最后一个斜杠:http://example.com/foo/fred/baz.html
。
在HTTP及其解释方面,您的代字号并不特别。它不是一个完整的URL,并且它不是以斜杠开头,因此它是一个相对路径URL,在我们的示例中,您最终会得到以下URL:http://example.com/foo/~/img/TT_favicon_16px.png
。当您删除波形符号时,它将成为绝对路径链接,您将获得http://example.com/~/img/TT_favicon_16px.png
。
当您访问这两个链接时,所提供的内容取决于您的Web服务器配置。我从来没有尝试像http://example.com/~/...
或http://example.com/foo/~/...
这样的链接,但我怀疑它会起作用 - 大多数网络服务器都没有配置为对这样的URL做出任何明智的反应(实际上在我的计算机上我得到了404 Not Found)。为什么你得到一个回复没有检查你的web服务器的配置是不可能的。