如何将非 www 域重定向到 Azure 上托管的 asp.net mvc 中的 WWW 域?
Posted
技术标签:
【中文标题】如何将非 www 域重定向到 Azure 上托管的 asp.net mvc 中的 WWW 域?【英文标题】:How to redirect a non www domain to WWW domain in asp.net mvc hosted on Azure? 【发布时间】:2021-01-19 20:19:09 【问题描述】:我在 Azure 中的 www.mydomain.tech 上设置了 ssl。 (mydomain.tech 是一个示例 url,不是我的实际域)。当我输入 url www.mydomain.tech 时,我没有收到任何错误,因为 SSL 工作正常。当我直接访问 mydomain.tech 时,我收到 DLG_FLAGS_SEC_CERT_CN_INVALID 错误。 我需要将来自 mydomain.tech 的任何请求转移到 www.mydomain.tech 我正在使用 Web.Config 文件中的以下代码进行转移。它不工作。我的 Url Pattern 是错误的,还是我需要在 azure 中进行任何其他更改以反映我的 Web.Config 更改?请建议。 PS - 在应用 Web.config 中的更改后,我已经重新启动了 Azure 机器。
<rule name="Redirect mydomain.com to www.mydomain.com" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*"></match>
<conditions>
<add input="HTTP_HOST" pattern="^mydomain.tech$"></add>
<add input="HTTPS" pattern="off"></add>
</conditions>
<action type="Redirect" url="https://www.mydomain.tech/R:0" redirectType="Permanent" appendQueryString="true"></action>
</rule>
【问题讨论】:
您的证书是否也涵盖mydomain.tech
(没有www)?如果没有,它需要。否则浏览器不会点击mydomain.tech
。
不,没有 www 不包括在内。如上所述,如果我转到非 www,它只会发出 SSL 警告,表明连接不安全。这就是我需要将任何非 www 自动重定向到 WWW 的原因。因此上面的代码在 Web.Config 中。
您需要一个非 www 证书。然后重定向将起作用。由于缺少证书,您无法访问重定向。
【参考方案1】:
查看 Ray 的这篇文章:3 Ways to Redirect HTTP to HTTPS and non-www to www in ASP.NET Core
您可能会注意到您在Startup.cs
文件中缺少以下代码:
app.UseRewriter(new RewriteOptions()
.AddIISUrlRewrite(env.ContentRootFileProvider, "XML_FILE_NAME")
.AddRedirectToHttps()
);
如果这对您不起作用,您还可以尝试其他两种替代方法中的任何一种。
【讨论】:
【参考方案2】:我必须使用免费的 SSL 提供程序(免费 SSL)为两个域创建一个单独的 pfx 文件,并且必须为两个域添加绑定以使其工作。还必须强制 azure 仅使用 HTTPS。这对我有用。
【讨论】:
以上是关于如何将非 www 域重定向到 Azure 上托管的 asp.net mvc 中的 WWW 域?的主要内容,如果未能解决你的问题,请参考以下文章
heroku 非 www 重定向到 www 域的网络解决方案
对于托管在 CloudFront 后面的 EC2 实例上的站点,如何将非 www 流量重定向到 www?
Azure API 网关根据租户 ID 将 url 重新路由到不在 Azure 上托管的后端应用程序?