我在一些要更改的HTML代码中遇到了这种形式的背景图片参考。

<a style="background: url('/~/media/Images/Shared/Logos/logo.png')" href="/">Home</a>


我无权询问原始作者,而且我不了解此处对代字号的评估方式。

如果url字符串以“ url('〜/ media / .....'”开头,我知道它将是媒体用户的根目录(因此,最好确保在所有部署服务器上都创建了该用户),但是/在波浪号的前面让我感到困惑。

我所做的所有搜索都只带回主目录说明,但事实并非如此。

[编辑]这是一个在线站点的一部分,徽标正确显示,我只是不知道为什么。

[edit 2]该网站是使用ASP.NET构建的。

[edit 3]以上是网站视图/源中URL的纯净版本,而不是ASP代码。

[edit 4]对于那些可能感到好奇的人,这里是实际的工作URL。我在同一家公司工作,但在不同的部门工作,并且正在Java EE中构建内部支持工具,该工具借用了一些样式。我看到了“ /〜/ ....”,想不出为什么它会起作用。

http://business.hibu.co.uk/~/media/Images/Shared/Logos/logo.png

最佳答案

在ASP.NET中,波浪号表示应用程序的根(不一定是网站的根)。但这仅在某些情况下可用(服务器控件,绑定数据的控件,或者有时是头部部分中的标签,例如scriptlink)。

我不认为常规正文中的a标记会处理该问题,而且我也不认为ASP.NET允许波浪号除了字符串开头以外的任何位置。

因此,我猜您实际上只是有一个名为~的物理目录。在Windows中,我认为波浪号没有任何特殊含义,因此它不是用户的主目录或类似的东西-只是常规目录的时髦名称。

编辑

看完您的评论后,它就是在浏览器中呈现的方式,并且可以正常工作,我几乎肯定地说,您的Web服务器上存在一个名为~的真实目录。要么进行某种形式的URL重写,要么需要查看web.config或IIS设置才能看到它。

10-04 15:45