次のようなアプリケーション内にフォルダー構造を設定しています。
- c:\inetpub\wwwroot\contoso\public
- c:\inetpub\wwwroot\contoso\secured
次の URL をこれらのフォルダー構造にマップしたいと考えています。
- http://www.contoso.com/login -> \public\login.aspx
- http://www.contoso.com/myaccount -> \secured\myaccount.aspx
- http://www.contoso.com/(css|images|js)/ * -> \public(css|images|js)* (以下のルールでは表されていません)
サーバーにApplication Request Routing バージョン 2がインストールされています。私の思考プロセスは、これらのようなマッピングを行うためのいくつかの書き換えルールを構築できるということでした...
<rewrite>
<rules>
<rule name="Rewrite pub page to aspx" stopProcessing="false">
<match url="^([a-z0-9/]+)$" ignoreCase="true" />
<conditions>
<add input="public\{REQUEST_FILENAME}.aspx" matchType="IsFile" ignoreCase="true" />
</conditions>
<action type="Rewrite" url="public/{R:1}.aspx" />
</rule>
<rule name="Rewrite sec page to aspx" stopProcessing="false">
<match url="^([a-z0-9/]+)$" ignoreCase="true" />
<conditions>
<add input="secured\{REQUEST_FILENAME}.aspx" matchType="IsFile" ignoreCase="true" />
</conditions>
<action type="Rewrite" url="secured/{R:1}.aspx" />
</rule>
<rule name="Rewrite 404 page to aspx" stopProcessing="true">
<match url="^([a-z0-9/]+)$" ignoreCase="true" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="public/default.aspx" />
</rule>
</rules>
</rewrite>
<location path="secured"><system.web><authorization><deny users="?"/></authorization></system.web></location>
<location path="public"><system.web><authorization><allow users="?,*"/></authorization></system.web></location>
私の考えでは、ファイルがパブリックフォルダーに存在するかどうかを確認し、存在する場合はそのファイルを書き換えるという条件を伝えていました。そうしないと、セキュリティで保護されたフォルダーにファイルが存在するかどうかを確認し、存在する場合はそのファイルを書き換えます。そうしないと、「他のすべてをキャッチする」ルールによってキャッチされ、デフォルトのページに戻るだけです。
しかし、これは私の期待どおりに機能していません...常にフォルダーに書き換えることはできますが、ファイルが存在するかどうかを確認するために起動する条件を取得できません。
助言がありますか?