我在一个示例项目中复制了您的问题,使用 SO 作为索引页面 (Views/Home/Index.cshtml) 上的锚超链接,将 http:// 协议更改为仅 www:
<a href="www.stackoverflow.com">Stack Overflow</a>
令人惊讶的是,当将鼠标悬停在写为[IP address]/www.stackoverflow.com 或[domain name]/www.stackoverflow.com 的锚链接上时,索引页面上生成的URL。
但是,当http:// 协议在不使用 www 前缀的情况下添加时,绝对路径会呈现为正确的 SO URL。
我的结论是,不要只使用 www 前缀,而是在您的绝对 URL 路径上指定 http 协议:
<a href="http://www.domain.com"> blabla </a>
或者如果您想创建您的站点根超链接,请使用 Html.ActionLink,如下所示:
@Html.ActionLink("blabla", "Index", "Home")
或者使用普通的锚标签:
<a href="@Url.Action("Index", "Home")">blabla</a>
恕我直言,如果未指定 URL 协议,Razor 视图引擎可能会将锚标记的 href 属性内的 URL 字符串视为站点根 IP/域下的控制器名称,因此需要 HTTP 前缀来区分控制器名称和外部绝对 URL 路径。
欢迎提出任何建议。