【问题标题】:What is the difference between path starting with '/' and '~/'以'/'和'~/'开头的路径有什么区别
【发布时间】:2018-09-05 06:28:40
【问题描述】:

我见过this question,但那是在回答其他问题。

今天,我遇到了一个奇怪的(至少对我而言)问题。问题是,我的网站上有这段代码......

<link rel="icon" type="image/png" sizes="16x16" href="~/img/TT_favicon_16px.png" />

网站的几乎所有页面都返回了该网站图标,但没有在网站的某个页面上返回。

我只是想象(无中生有)删除波浪号,它开始在网站上的所有页面上工作。

<link rel="icon" type="image/png" sizes="16x16" href="/img/TT_favicon_16px.png" />

这引起了我的好奇心,我想了解两者之间的区别...

【问题讨论】:

  • 您是否在您的网页的 HTML 中使用任何元基标签,其中网站图标不起作用,以及它在哪里起作用?

标签: html .net href umbraco7 favicon


【解决方案1】:

它是上下文的。

假设当前页面的 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

当您访问这两个链接时,所提供的内容取决于您的网络服务器配置。我从来没有尝试过像http://example.com/~/...http://example.com/foo/~/... 这样的链接,但我怀疑它会起作用——大多数网络服务器都没有配置为在这样的 URL 上响应任何合理的东西(实际上在我的电脑上我得到了 404 Not Found )。如果不检查您的 Web 服务器的配置方式,就无法说出为什么您会收到响应。

【讨论】:

  • 感谢您的解释,但我无法理解&lt;link&gt; 标签中波浪号的解析。我知道 .Net 将其转换为应用程序的根目录,但是使用 标签,它是如何转换的,或者它是 Visual Studio 还是 .Net 本身在这里发挥了一些魔力?
  • "当你删除波浪号时,它变成一个绝对路径链接,你得到http://example.com/~/img/TT_favicon_16px.png。" ...实际上,如果他删除了波浪号,他就不会得到一个仍然有波浪号的网址。他只是得到http://example.com/img/TT_favicon_16px.png
猜你喜欢
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 2020-05-31
  • 2013-04-04
  • 1970-01-01
  • 2020-04-27
相关资源
最近更新 更多