2016-04-14 75 views
4

我有一個簡單的通配符路由規則,我想申請我的Azure Web應用程序。在Azure網絡應用中重寫URL

<rule name="MyRule"> 
    <match url="*" /> 
    <action type="Rewrite" url="/index.html" /> 
</rule> 

我在這裏有任何選擇,因爲我不能RDP到機器和小提琴的IIS?這不是一個ASP.Net網站,它是一個簡單的SPA應用程序。

回答

7

您需要在wwwroot文件夾中創建一個web.config文件,並在其中放置相關的配置項。

下面是一個web.config規則的例子,給你一個它應該看起來像什麼的概念。

下面的例子重定向默認的* .azurewebsites.net域自定義域(通過http://zainrizvi.io/2016/04/07/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> 
4

如果只是想所有的URL解析到這個服務器&網站重定向到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」。 請注意,這意味着您網站的所有網址都將被重寫,即使是其他資源(如CSS和JS文件,圖片等)也是如此。因此,您最好從其他網域獲取資源。

2

如果你想要做的實際重寫(不重定向),不要忘了讓ARR與投入到站點文件夾包含以下內容applicationHost.xdt文件:

<?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>