2016-09-20 9 views
0

IIS 8.5のセットアップでは、単一のWebサイトがdomain.comにバインドされており、domain.com/app1、domain.com/app2などのように多数のIISアプリケーションがアクセスされますIISアプリケーションのURL書き換えルールを正しく適用する方法

これらの各アプリケーションは同じ物理パスを指しているため、すべてがweb.configを共有します。これは特定のCMS構成です。

通常のURL書き換えルール(HTTPSへのリダイレクト、小文字の適用、末尾のスラッシュの追加など)を各アプリケーションが共有するweb.configに適用しましたが、これらのルールはアプリケーション名の後のURLにのみ適用されています。私はちょうど標準ルールはURL書き換えGUIを使用して追加されたルール:

<rewrite> 
    <rules> 
    <rule name="Enforce lowercase" stopProcessing="true"> 
     <match url="[A-Z]" ignoreCase="false" /> 
     <action type="Redirect" url="{ToLower:{URL}}" redirectType="Permanent" /> 
    </rule> 
    <rule name="Add trailing slash" stopProcessing="true"> 
     <match url="(.*[^/])$" /> 
     <conditions> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     </conditions> 
     <action type="Redirect" url="{R:1}/" redirectType="Permanent" /> 
    </rule> 
    <rule name="Redirect to HTTPS" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{HTTPS}" pattern="^OFF$" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" /> 
    </rule> 
    </rules> 
</rewrite> 

ので、例えば、http://domain.com/APP1/PATHhttps://domain.com/APP1/path/にリダイレクトします。また、https://domain.com/app1にはhttps://domain.com/app1/にリダイレクトされません。

HTTPSルールは問題ありませんが、特定のアプリケーション名(app1、app2など)を処理する必要があることを念頭に置いて、URL全体で動作するように他の2つのルールをどのように設定できるか教えてください一般的に。

UPDATE

私は私のニーズには十分である(サーバーレベル)IISでのグローバル・ルールを使用して小文字のURLを強制することができることを発見しました。しかし、後続のスラッシュを追加/削除するためのWebサイトレベルのルールを複製することはできないようです。

答えて

0

アクションURLを変更するだけで済みます。

+0

申し訳ありませんが、この場合、ルールは実行されないため、ルートURL(例:https://domain.com/app1)に末尾のスラッシュを追加することはできません。 – getsetcode

+0

これは私が自分のウェブサイトで使用するルールですが、なぜ私にとってはうまくいかず、あなたにとってはうまくいかないのかどうかはわかりません。多分あなたはそれに干渉する別のルールを持っていますか? – Henry

+0

もう一度テストすれば、そのルールは相対パスでしか動作しないので、domain.comをdomain.com/にリダイレクトしません(または私の場合はdomain.com/appからdomain.com/appにリダイレクトされません/ appはIISアプリケーションであるため) – getsetcode

関連する問題