特定のルールに一致するすべてのHTTPおよびHTTPS要求を実際のサイトにリダイレクトし、リダイレクトのみを行う必要があるため、サーバーレベルでURL書き換えを実装しましたユーザーが実際のサイトにアクセスしている場合ルールは最初は正常に動作します。しかし、実際のサイトでCtrl + Rキーを繰り返し押すと、私のサイトにアクセスできなくなるようです。 「このページを表示できません」というエラーがユーザーに返されます。このテストは、Windows x64上のIE 11ブラウザーで行われ、WebサーバーはWindows Server 2012 R2上のIIS 8.5です。リダイレクトで返されるHTTP応答コードは307と設定されています。URLリライトにより「このページを表示できません」
私のIISサーバーでFailed Request Routingをオンにすると、失敗した要求ログのREWRITE_DISABLED_KERNEL_CACHEに警告メッセージが表示されます。これは、ページが「このページを表示できません」を返すときです。
URL書き換えルールを無効にすると、すぐにHTTPとHTTPSサイトの両方にアクセスできるようになり、リダイレクトが機能しなくなったことを確認しました。その後も同じルールを有効にしますが、HTTPSサイトでのみ有効になります。要求は次の例のURLのいずれかに当たる場合
次のとおり
は基本的に私のリダイレクションルール<system.webServer>
...
<rewrite>
<globalRules>
<clear />
<rule name="HTTPS to HTTP" enabled="true" stopProcessing="true">
<match url="^(downloads?/?)?$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_URI}" pattern="http://.*?/downloads/" negate="true" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}/downloads/" appendQueryString="false" redirectType="Temporary" />
</rule>
</globalRules>
<outboundRules>
</outboundRules>
</rewrite>
...
</system.webServer>
で、私はそれらをリダイレクトします:
要求が直接私のサイトヒットした場合、私は、リダイレクトされません。
私は私の実際のサイトに当たった、私はrエッジ編集ルールはまだ適用されています。だから私はそこに2つの異なる問題があるかもしれないと思う。
2に送信されたときに適用されている無限のリダイレクションルール)REWRITE_DISABLED_KERNEL_CACHE
あなたは命の恩人です!しかし、少し変わった。 REQUEST_URIを使用する代わりに、URLを使用するように切り替えました。少なくとも、私はもう少し詳しく文書化された変数を使用しています。 –
@louisxieクエリ文字列ジョブがないので、それは良い呼び出しです。 –
何らかの理由で、新しいルールがhttps:///とhttps:// /を目的のサイトにリダイレクトできませんでした。これは、IISが{URL}条件をtrueとして適用し、{HTTPS}条件をfalseとして評価するためです。そこで、適用されたすべての条件を削除し、置き換えました。 –