web-dev-qa-db-fra.com

Réécriture d'une URL dans une application Web Azure

J'ai une règle de routage générique simple que je souhaite appliquer à mon application Web Azure.

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

Ai-je une option ici étant donné que je ne peux pas RDP dans la machine et jouer avec IIS? Ce n'est pas un site Web ASP.Net, c'est une simple application SPA.

9
Mister Epic

Vous devez créer un fichier web.config dans votre dossier wwwroot et y placer les entrées de configuration appropriées.

Voici un exemple de règle web.config, pour vous donner une idée de son apparence.

L'exemple ci-dessous redirige le domaine * .azurewebsites.net par défaut vers un domaine personnalisé (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>
14
Zain Rizvi

Si vous souhaitez simplement que toutes les URL résolues vers ce serveur et ce site redirigent vers index.html vous pouvez utiliser cette section de réécriture:

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

Ceci est très similaire à ce que vous avez, sauf quelques corrections de syntaxe mineures, par exemple le modèle doit être ". *" et l'URL de réécriture cible simplement "index.html". Notez que cela signifie que TOUTES les URL de votre site seront réécrites, même pour d'autres ressources comme les fichiers CSS et JS, les images, etc. Il vaut donc mieux récupérer vos ressources dans d'autres domaines.

7
Tian van Heerden

Si vous souhaitez effectuer des réécritures réelles (pas des redirections), n'oubliez pas d'activer ARR avec le fichier applicationHost.xdt placé dans le dossier du site avec le contenu suivant:

<?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> 
4
Lech Migdal