4

すべてのページ パスから .aspx を削除できるように、簡単な書き換えルールを作成しました。

そうすれば、誰かがhttp://www.domain.com/Contactと入力すると、 http://www.domain.com/contact.aspxと入力しなくても連絡先ページに移動します。

ファイル名にピリオドが含まれている場合を除いて、次のルールは正常に機能します。URLがファイルまたはディレクトリである場合に否定する条件があると思っても、これはハンドラーやその他の特別なファイルには適用されないため、ルールを適用したくありません。この問題を回避するために、それぞれに条件を追加して特殊ファイルを無効にしていますが、これはもはや機能しませんが、これが発生する特殊な状況がかなりあり、新しいファイルを作成する必要がないためです。特殊なケースごとに 1 つ。

基本的には、ファイル名にピリオドがある場合はそれを無効にするという条件を追加するだけです。誰でも助けることができますか?私は正規表現が苦手です。

<rule name="RewriteASPX" stopProcessing="true" enabled="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="{R:1}.aspx" />
            </rule>
4

1 に答える 1

0

一致フィールドでこれを試してください:

<match url="^(.*/[^.]*)$" />

「.」を含まないすべての URL に一致する必要があります。最後の「/」の後。

于 2012-12-03T15:53:20.760 に答える