【问题标题】:Append www in URL for Hosted ASP Site (i.e. no IIS access)在托管 ASP 站点的 URL 中附加 www(即没有 IIS 访问权限)
【发布时间】:2013-02-08 19:12:52
【问题描述】:

我看到很多类似的问题都是胡言乱语,我看不懂:

我想知道如何使用 Microsoft 的技术来做到这一点......或者只是向我解释一下其他人在谈论什么以及如何使用它们。

基本上,如果有人在地址栏中键入“mydomain.com”,我希望它在页面加载完成后解析为“www.mydomain.com”。

编辑:这是一个托管网站,所以我无法配置 IIS 服务器。

【问题讨论】:

标签: asp.net html url


【解决方案1】:
  1. 非 www 到 www 重定向
  2. www.yourdomainname.com/default.aspx 到 www.yourdomainname.com

现在在 web.config 中添加配置标签

<system.webServer>
<rewrite>
      <rules>
        <rule name="Redirect to WWW" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^yourdomainname.com$" />
          </conditions>
          <action type="Redirect" url="http://www.yourdomainname.com/{R:0}" redirectType="Permanent" />
        </rule>

        <rule name="Default Document" stopProcessing="true">
          <match url="(.*?)/?default\.aspx$" />
          <action type="Redirect" url="{R:1}/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

(或)选择这个:

<rewrite>
    <globalRules>
        <rule name="Redirects to www.domain.com" patternSyntax="ECMAScript" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAny">
                <add input="{HTTP_HOST}" pattern="^domain.*(com|net)$" />
                <add input="{HTTP_HOST}" pattern="^(www.)?mydomain2.(com|net)$" />
                <add input="{HTTP_HOST}" pattern="^www.domain.net$" />
            </conditions>
            <action type="Redirect" url="http://www.domain.com/{R:0}" />
        </rule>
    </globalRules>
</rewrite>

【讨论】:

  • 我感觉这通常是正确的答案,但似乎由于他的托管环境,他可能没有添加 IIS Rewrite 模块的能力。但是,如果他确实有那个模块,这是最好的
  • 是的,我的 VS2010 项目告诉我 &lt;rewrite&gt; 是无效的子元素。第二个示例进入web.config 文件的哪个部分?
  • 酷!即使 VS2010 报错了,我还是上传了那个版本,它也能正常工作。
【解决方案2】:

这是一个有趣的解决方案。我只是因为你描述的限制而建议它。最好在 IIS 中执行此操作,或者像其他答案所建议的那样使用 HTTP 模块。但是,这也可以,只是不是一个很好的方法。

您可以将此代码放入您的页面初始化事件处理程序(或母版页的初始化处理程序)中。

If Request.RawUrl.StartsWith("http://mydomain") Then
  Response.Redirect(Request.RawUrl.Replace("://", "://www."))
End If

mydomain 就像没有 wwwmydomain.com

它检查 URL 是否没有 WWW “应该”在 WWW 的位置。如果不存在,则将用户重定向到在正确位置有 WWW 的页面版本。

【讨论】:

  • 谢谢布赖恩。这就是我希望我不必做的事情,但我不知道如何问这个问题。有什么提示应该如何表达问题,以便 ASP.NET 世界中的其他人可以在未来找到它?
  • 如果您不想使用 HTTP 模块并且您无权访问 IIS 配置来安装重写模块,那么我的这个答案是一个很好的解决方案。最好有一个母版页,只需将代码放入一次,但如果每个页面都需要代码,这并不是世界末日。我会将您的问题标题调整为“无法访问 IIS 配置”。我认为这会对人们有所帮助
猜你喜欢
  • 2014-02-16
  • 1970-01-01
  • 2020-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 2015-07-03
  • 1970-01-01
相关资源
最近更新 更多