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/PATH
はhttps://domain.com/APP1/path/
にリダイレクトします。また、https://domain.com/app1
はにはhttps://domain.com/app1/
にリダイレクトされません。
HTTPSルールは問題ありませんが、特定のアプリケーション名(app1、app2など)を処理する必要があることを念頭に置いて、URL全体で動作するように他の2つのルールをどのように設定できるか教えてください一般的に。
UPDATE
私は私のニーズには十分である(サーバーレベル)IISでのグローバル・ルールを使用して小文字のURLを強制することができることを発見しました。しかし、後続のスラッシュを追加/削除するためのWebサイトレベルのルールを複製することはできないようです。
申し訳ありませんが、この場合、ルールは実行されないため、ルートURL(例:https://domain.com/app1)に末尾のスラッシュを追加することはできません。 – getsetcode
これは私が自分のウェブサイトで使用するルールですが、なぜ私にとってはうまくいかず、あなたにとってはうまくいかないのかどうかはわかりません。多分あなたはそれに干渉する別のルールを持っていますか? – Henry
もう一度テストすれば、そのルールは相対パスでしか動作しないので、domain.comをdomain.com/にリダイレクトしません(または私の場合はdomain.com/appからdomain.com/appにリダイレクトされません/ appはIISアプリケーションであるため) – getsetcode