2016-08-22 29 views
2

私はMicrosoft Azure Webサイトで私がホストしているアングルアプリを持っています。私は私のための拡張機能をインストールすることで、HTTPSへのすべての要求の自動リダイレクトでそれを設定した:Azure Web App HTTP/HTTPS書き換えルール

https://github.com/gregjhogan/redirect-http-to-https-site-extension

は、どのような拡張アプリが行うことは、それはこのようになりますapplicationhost.xdtファイルを追加することです

<?xml version="1.0" ?> 
 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
 
    <location path="%XDT_SITENAME%" xdt:Transform="InsertIfMissing" xdt:Locator="Match(path)"> 
 
    <system.webServer xdt:Transform="InsertIfMissing"> 
 
     <rewrite xdt:Transform="InsertIfMissing"> 
 
     <rules xdt:Transform="InsertIfMissing" lockElements="clear"> 
 
      <rule name="redirect HTTP to HTTPS" enabled="true" stopProcessing="true" lockItem="true"> 
 
      <match url="(.*)" /> 
 
      <conditions> 
 
       <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
 
       <add input="{WARMUP_REQUEST}" pattern="1" negate="true" /> 
 
      </conditions> 
 
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" /> 
 
      </rule> 
 
     </rules> 
 
     </rewrite> 
 
    </system.webServer> 
 
    </location> 
 
</configuration>

今では正常に動作し、すべてがHTTPSにリダイレクトされます。今、私は新しい要件を見つけました。書き換えルールを次のように編集したいと思います。すべてのリクエストをHTTPSにリダイレクトします(現在のように)。ただし、次のURLを除いて、すべてのリクエストをリダイレクトします。 "/#/ user/[SomeランダムなユーザID]」となります。

私はさまざまな投稿を読んだことがありますが、いくつかのものを試しましたが、このようなIISセットアップやものは私のドメインではありません。私はこの{REQUEST_URI}条件を追加するときに近いように私は感じる試みがされています

<conditions> 
 
    <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
 
    <add input="{REQUEST_URI}" negate="true" pattern=".*/#/user/.+" ignoreCase="true" /> 
 
    <add input="{WARMUP_REQUEST}" pattern="1" negate="true" /> 
 
</conditions>

を私はAzureのWebアプリケーションを再起動するだけでなく、それを再配備しようとしましたが、それはdoesnの元のルールが適用されるため、すべてがHTTPSにリダイレクトされます。

答えて

0

私はオンラインで正規表現をテストしていた、そしてあなたがスラッシュエスケープする必要があるようです:

\/#\/user\/.+ 

テスト済みの文字列:

http://localhost/#/user/123 

テスト済みの正規表現:

\/#\/user\/.+ 

をウェブサイト: http://www.regextester.com/

+0

おかげでこれを追加してみたが、残念ながらそれはdidntの仕事..イムは、トラブル、それをデバッグしました。任意のアイデアをどのようにデバッグする? –

+0

正規表現をデバッグしますか?このregextester.comを通じて役立つではありません? –

+0

はい、参考になりました。私が意味することは、正規表現が正しいと言うことができますが、私はまだ私が望むようにリダイレクトを取得しないということです。サーバー上の実際のリダイレクトをどのようにデバッグするのですか?それも可能ですか? –

0

あなたApplication_beginrequestイベントへの応答のための

if (!HttpContext.Current.Request.IsSecureConnection && !HttpContext.Current.Request.Url.Host.Contains("/#/user/[Some random user id]")) 
     { 
      Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] 
             + HttpContext.Current.Request.RawUrl); 
     }