1

ページがタイムアウトしたときにリダイレクト ループの問題が発生しているように見えるフォーム認証を使用する asp.net Web サイトがあります。

まず私のルール:

<rewrite>
  <rules>
     <clear />
        <rule name="HTTP to HTTPS redirect" enabled="false" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{HTTPS}" pattern="OFF" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/" appendQueryString="true" redirectType="Permanent" />
        </rule>
        <rule name="Root to login page" enabled="true" stopProcessing="true">
            <match url="^$" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
            <action type="Redirect" url="https://{HTTP_HOST}/Account/Login.aspx" redirectType="Found" />
        </rule>
        <rule name="Login" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
            <match url="*/Login.aspx" />
            <conditions>
                <add input="{REQUEST_URI}" pattern="*account/login.aspx" negate="true" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/Account/Login.aspx" />
        </rule>
</rules>
</rewrite>

ここでの意図は次のとおりです。

  1. http.//mysite.com を参照すると、https.//mysite.com にリダイレクトされます。
  2. 誰かが https.//mysite.com/ を参照すると、https.//mysite.com/account/login.aspx にリダイレクトされます
  3. 誰かが私のサイトの任意のフォルダーまたはサブフォルダーにある login.aspx ページを要求すると、https.//mysite.com/account/login.aspx にリダイレクトされます

最初のルールが無効になっている場合、ページの有効期限が切れると、ユーザーは正しい戻り URL (https.//mysite.com/account/login.aspx?ReturnUrl=%2fMemberPages%2fMyPage) を持つログイン ページにリダイレクトされることを確認しました。 .aspx)。ただし、ページの有効期限が切れたときに最初の urlrewrite ルールがオンになっていると、ユーザーはページを表示できないというエラーを受け取り、アドレス バーの URL は https.//mysite.com/memberpages/mypage.aspx になります。

ReturnUrlの最初のルールに除外を追加するなど、さまざまな設定を微調整しようとしましたが、動作させることができず、締め切りに間に合いません。誰かが私にいくつかの提案を手伝ってもらえますか?

4

2 に答える 2

0

最初のルールは にリダイレクトされるためurl="https://{HTTP_HOST}/"、2 番目のルールは末尾/にも一致する必要があるため、次のように記述する必要があります。

<rule name="Root to login page" enabled="true" stopProcessing="true">
  <match url="^/?$" />
  <action type="Redirect" url="account/login.aspx" redirectType="Found" />
</rule>

毎回完全な URL にリダイレクトする必要はないことに注意してください (https://{HTTP_HOST}/ほとんどの場合はスキップできます)。

于 2013-05-29T18:53:55.810 に答える