我需要在一个Azure网站上指向数百甚至数千个主机名。对于一个简单的理由,您可以将其视为虚荣/品牌重定向站点。例如:
我知道我可以将* .example.com DNS条目映射到我的azure web应用程序,但这并不具有吸引力,因为该域只获得其中一个并试图说服权力相对简单/愚蠢的需求是他们如何使用外卡条目。
同样,我知道我可以进入Azure门户和/或使用Powershell手动将条目添加到配置中,但这看起来像是一项额外的工作,需要管理重定向映射的人员能够更好地控制Web应用程序的Azure设置。
此解决方案是否有任何巧妙的解决方法?是否有一层服务使我的应用程序获得了我自己的IP地址,让我可以为其执行DNS别名?是否有其他Azure产品可能会重写/转发到我的应用程序,但没有上述限制?
答案 0 :(得分:0)
根据我的理解,您可以利用IIS URL Rewrite和Using rewrite maps for redirection将以下代码配置到您网站的web.config文件的system.webServer
部分,如下所示:
<rewrite>
<rewriteMaps>
<rewriteMap name="hostRedirects">
<add key="marketing.example.com" value="https://example.sharepoint.com/sites/themarketingteam"/>
<add key="finance.example.com" value="http://someinternalservce.example.com/reports/finance"/>
</rewriteMap>
</rewriteMaps>
<rules>
<rule name="Redirect rule" stopProcessing="true">
<match url=".*"/>
<conditions>
<add input="{hostRedirects:{HTTP_HOST}}" pattern="(.+)"/>
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="true" redirectType="Permanent"/>
</rule>
</rules>
</rewrite>
此外,您可以使用DbProvider,FileMapProvider等将URL映射存储到db或文件中。我建议你使用FileMapProvider,它可以将重写映射条目存储在一个文件中,而不是将它们保存在web.config文件中。有关详细信息,请参阅Using Custom Rewrite Providers with URL Rewrite Module。
此外,您可以编写代码并构建自定义HttpMoudle来检查传入主机,然后根据需要重定向。这是一篇讨论详细步骤的博客,您可以参考here。