Rewriting a URL in an Azure web app

31,156

Solution 1

You need to create a web.config file in your wwwroot folder and put the relevant config entries there.

Here's an example of an web.config rule, to give you an idea of what it should look like.

The below example redirect the default *.azurewebsites.net domain to a custom domain (via 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>

Solution 2

If simply want all URL's that resolve to this server & site to redirect to index.html you could use this rewrite section:

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="SPA">
                    <match url=".*" />
                    <action type="Rewrite" url="index.html" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

This is very similar to what you have except some minor syntax fixes e.g. the pattern should be ".*" and the rewrite URL target simply "index.html". Note this means that ALL URL's to your site will be rewritten, even for other resources like CSS and JS files, images etc. So you'd better be fetching your resources from other domains.

Solution 3

If you want to do actual rewrites (not redirects), dont forget enabling ARR with applicationHost.xdt file put to the site folder with the following content:

<?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> 
Share:
31,156
Mister Epic
Author by

Mister Epic

Updated on December 20, 2020

Comments

  • Mister Epic
    Mister Epic over 3 years

    I have a simple wildcard routing rule I want to apply for my Azure web app.

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

    Do I have any option here given I can't RDP into the machine and fiddle with IIS? This is not an ASP.Net website, it's a simple SPA application.

  • Matt
    Matt over 5 years
    Ensure you have installed the IIS Rewrite Module locally too :) iis.net/downloads/microsoft/url-rewrite
  • Andreas
    Andreas over 5 years
    @Zain Rizvi the link you provided is not working anymore
  • Saad Awan
    Saad Awan over 3 years
    the above code look fine but when I edit my web.config file and past rewrite code and save the file and again on refresh pasted code disappeared? any logic, site is connected with pipeline