IIS サーバーに IIS Url Rewrite 2.0 をインストールしたばかりですが、一部の書き換えが正しく実行されないことに少し問題があります。これが私の問題です:
すべてのファイルを次のように書き換えたい:welcome.aspx>welcome/、about.aspx>about/など。
<rule name="Remove extension with slash" stopProcessing="true">
<match url="(.*)/" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="{R:1}.aspx" appendQueryString="true" />
</rule>
これまでのところ動作しています..しかし、次のような URL を実行したときに実行したい default.aspx のクエリ文字列関数もいくつかあります: mysite.com/logout/ これは実際には mysite.com/default.aspx?action= ですこのルールによるログアウト:
<rule name="Friendly URL" stopProcessing="true">
<match url="(.*)/" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="default.aspx?action={R:1}" appendQueryString="true" />
</rule>
ただし、存在しない logout.aspx ファイルを検索するため、2 番目のルールは実行されません。これは、default.aspx のクエリ文字列関数の形式でのみです。
両方を達成する方法はありますか?
::::::::::: 編集 ::::::::::::
私は一日中試しています..次の設定にかなり近づきました:
<rule name="Remove ext" stopProcessing="true">
<match url="^([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}.aspx" matchType="IsFile" negate="false" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="{R:1}.aspx" appendQueryString="true" />
</rule>
<rule name="Default actions" stopProcessing="true">
<match url="^([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="default.aspx?action={R:1}" appendQueryString="true" />
</rule>
<rule name="Other files with querystrings" stopProcessing="true">
<match url="^([^/]+)/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="{R:1}.aspx?action={R:2}" appendQueryString="true" />
</rule>
ほとんどすべてが機能します
user.aspx > ユーザー
default.aspx?action=logout > ログアウト
user.aspx?action=コメント > ユーザー/コメント
それを台無しにするのは、ユーザーの後にスラッシュを追加した場合だけです。default.aspx ルールに応答し、クエリ文字列として機能します。これは意図したものではありません。手がかりはありますか?