【问题标题】:IIS adds domain to website urlIIS 将域添加到网站 url
【发布时间】:2017-01-07 23:08:39
【问题描述】:

我有一个由 IIS7 托管的 ASP .NET MVC 5 项目。

在产品页面我有这个代码:

<a href="www.domain.com"> blabla </a>

它托管在 domainx 或 ipx 上。现在,当我浏览该站点并将鼠标悬停在那里的 url 上时,它显示它正在前往 www.domainx.com/www.domain.com。如果我使用 IP 是一样的,但它会在 url 前面加上 IP。

是什么导致了这种情况和/或我怎样才能阻止它/防止它发生?

【问题讨论】:

    标签: asp.net-mvc iis asp.net-mvc-5 iis-7


    【解决方案1】:

    我在一个示例项目中复制了您的问题,使用 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 路径。

    欢迎提出任何建议。

    【讨论】:

    • 抱歉回复晚了。这确实有效,谢谢:)
    猜你喜欢
    • 2017-07-22
    • 1970-01-01
    • 2017-08-31
    • 2020-03-15
    • 2014-01-28
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    相关资源
    最近更新 更多