在正斜杠之后在 url 中使用波浪号
Posted
技术标签:
【中文标题】在正斜杠之后在 url 中使用波浪号【英文标题】:Using a tilde in a url after a forward slash 【发布时间】:2013-04-10 13:24:28 【问题描述】:我在一些我正在更改的 html 代码中遇到了此表单的背景图片引用。
<a style="background: url('/~/media/Images/Shared/Logos/logo.png')" href="/">Home</a>
我无法询问原作者,我不明白这里是如何评估代字号的。
如果 url 字符串以 "url('~/media/.....'" 开头,我知道这将是媒体用户的根目录(因此您最好确保在所有部署服务器上创建该用户) 但是波浪号前面的 / 让我感到困惑。
我所做的所有搜索都只是带回了主目录说明,但似乎并非如此。
[edit] 这是一个实时站点的一部分,徽标正确显示,我只是不知道为什么。
[编辑 2] 该网站是使用 ASP.NET 构建的。
[编辑 3] 上面是来自站点上的视图/源的 url 的清理版本,而不是 ASP 代码。
[edit 4] 对于那些可能好奇的人,这里是实际工作的 url。我在同一家公司工作,但在不同的部门工作,我正在使用 Java EE 构建一个内部支持工具,它借用了一些样式。我看到了“/~/....”,但想不出一个很好的理由。
http://business.hibu.co.uk/~/media/Images/Shared/Logos/logo.png
【问题讨论】:
***.com/questions/6252471/… 这不太可能与 Unix 使用波浪号的用途有关。将 webroot 设置为服务器的根目录需要一个非常笨拙的网络管理员。 您使用的是什么服务器技术?在 ASP.NET 中,在某些控件上,有时可以在 URL 的开头使用波浪号来引用 Web 应用程序的根。但我不认为 ASP.NET 会允许它像这样在中间。此外,如果是服务器使用它,它在浏览器中呈现时会呈现不同的呈现方式。如果你在页面上查看源代码,波浪号还在吗? 图像是否显示它应该显示的内容?如果是这样,请检查用户主文件夹 嗯,在 Unix 系统上,~media
将是媒体用户的根。但是,我认为/~/
实际上是一个名为~
的目录——无论网络服务器是否以任何特殊方式处理它,我们都无法告诉你。
【参考方案1】:
在 ASP.NET 中,波浪号表示应用程序的根(不一定是网站的根)。但它仅在某些情况下可用(服务器控件、数据绑定控件,或者有时在头部部分中的标签,如 script
或 link
)。
我认为常规正文中的 a
标记不会处理它,而且我不认为 ASP.NET 允许波浪号到任何地方,除了字符串的开头。
所以我猜你实际上只是有一个名为~
的物理目录。在 Windows 中,我认为波浪号没有任何特殊含义,因此它不是用户的主目录或类似的东西 - 只是一个普通目录的时髦名称。
编辑
阅读您的评论后,这是它在浏览器中呈现的方式,并且它正在工作,我几乎肯定在您的网络服务器上有一个名为 ~
的真实目录。要么是这样,要么是某种 URL 重写正在进行,您需要查看 web.config 或 IIS 设置才能看到。
【讨论】:
这是我能想到的唯一可行的答案,但部署站点的方式似乎很奇怪。 我同意 - 因为波浪号可以有一些特殊含义,所以我永远不会这样命名一个真正的目录。 我对你的答案投了赞成票,因为这绝对是 一个 的解释,但我会暂时保留它,以防有另一种解释我们知道。【参考方案2】:这很可能来自他们的本地计算机,即他们的主目录。如果资产路径是从他们的开发机器复制的,它永远无法从远程服务器正确解析。
否则,它是相对于其服务器上主目录的路径。
【讨论】:
以上是关于在正斜杠之后在 url 中使用波浪号的主要内容,如果未能解决你的问题,请参考以下文章