0

ASP.NET Web アプリで、要求 URL から意図的に連続したバックスラッシュが削除されているという問題が発生しています。

次のようなものをリクエストします: localhost/Page/A//C

しかし、リクエストがページにヒットすると、生の URL は次のようになります: localhost/Page/A/C

これが原因かどうかはわかりませんが、Url Rewite 正規表現を用意しています。ルールは次のとおりです。

   <system.webServer>
        <rewrite>
            <rules>
                <rule name="Games QueryString">
                  <match url="^(Page|OtherPage).aspx(?:/([\w-_()]+)(?:/([\w-_() ]*)(?:/([\w-_()]+))?)?)?$" />
                  <action type="Rewrite" url="{R:1}.aspx?1={R:2}&amp;2={R:3}&amp;3={R:4}" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>

したがって、書き換え後、クエリ文字列は Page.aspx?1=A&2=C&3= のようになりますが、Page.aspx?1=A&2=&3=C

助けてください!!

4

1 に答える 1

0

おそらく、正規表現を次のように変更できます。

^(Page|OtherPage).aspx(?:/+([\w-_()]+)(?:/+([\w-_() ]*)(?:/+([\w-_()]+))?)?)?$

一致の後に「+」を「/」に追加しました。これにより、単一の「/」の受け入れから 1 つ以上の受け入れに変更されます。

また、なぜそこに余分なスラッシュを入れたいのか、一生解決できません。おそらく悪い考えです。何らかの理由でそれを行うことを再考してください。

于 2010-10-28T02:34:25.610 に答える