我有一个简单的通配符路由规则,我想申请我的Azure网络应用程序。
<rule name="MyRule">
<match url="*" />
<action type="Rewrite" url="/index.html" />
</rule>
我有没有选择,因为我不能RDP进入机器并摆弄IIS?这不是一个ASP.Net网站,它是一个简单的SPA应用程序。
答案 0 :(得分:13)
您需要在wwwroot文件夹中创建一个web.config文件,并在其中放置相关的配置条目。
这是一个web.config规则的示例,可以让您了解它应该是什么样子。
以下示例将默认的* .azurewebsites.net域重定向到自定义域(通过http://zainrizvi.io/blog/block-default-azure-websites-domain/)
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect rquests to default azure websites domain" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^yoursite\.azurewebsites\.net$" />
</conditions>
<action type="Redirect" url="http://www.yoursite.com/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
答案 1 :(得分:7)
如果只想要解析此服务器的所有网址&amp;要重定向到index.html
的网站,您可以使用此重写部分:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="SPA">
<match url=".*" />
<action type="Rewrite" url="index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
这与你所拥有的非常类似,除了一些小的语法修复,例如模式应为“。*”,重写URL目标只是“index.html”。 请注意,这意味着您的网站的所有URL都将被重写,即使对于CSS和JS文件,图像等其他资源也是如此。因此,您最好从其他域获取资源。
答案 2 :(得分:4)
如果您想进行实际重写(不是重定向),请不要忘记将带有applicationHost.xdt文件的ARR放入包含以下内容的站点文件夹中:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" />
<rewrite>
<allowedServerVariables>
<add name="HTTP_ACCEPT_ENCODING" xdt:Transform="Insert" />
<add name="HTTP_X_ORIGINAL_HOST" xdt:Transform="Insert" />
</allowedServerVariables>
</rewrite>
</system.webServer>
</configuration>