1

一般的な問題:

次のような形式の IIS Web サーバーに送信される URL があります。

http://www.server.com/page.aspx

また、次のような URL が入ってくることも確認しています。

http://www.server.com//page.aspx

ユーザー エージェントが Internet Explorer の場合、これは 2 つの異なるページとして解決されるため、余分なパス文字を削除したいと考えています。したがって、キャッシュから解決する必要があるときに、コンテンツを 2 回ダウンロードします。

これがurl-rewritingモジュールなどで解決する問題なのか、構成設定があるのか​​はわかりません。

4

2 に答える 2

0

問題はIISではなくIEにあると思います。

URL書き換えとは、通常、ブラウザがURLを認識しないように、サーバー上でURLをからhttp://example/shoes/clarkesにマッピングするプロセスを指します。http://example/shoes.aspx?maker=clarkes

あなたがする必要があるのは、ブラウザをから301Http応答コードhttp://www.server.com//page.aspxhttp://www.server.com/page.aspx使用するようにリダイレクトすることです。

理論的には:

ASP.NETを使用しているように見えるので、これを行う最も透過的な方法は、要求されたURIの二重スラッシュをチェックしてリダイレクトを行うHttpModuleを作成することです。

これを行う最も簡単な方法は、Global.ascx。(cs | vb)にコードを配置して、BeginRequestで要求されたURIを確認することです。

いずれにせよ、チェックを行うためのコードは同じです。

実践中:

IISまたはASP.NETは、表示する前に二重の「/」を飲み込んでいる可能性があります。IISの場合は、IISの前でプロキシを使用する必要がある場合があります。ASP.NETの場合は、その仕事をしてくれるISAPI拡張機能を見つけることができるかもしれません。

別のオプション

あなたはどちらか

  • ページを分割して、個々のリソースのほとんどをhtmlコンテンツとは別にキャッシュできるようにします
  • 余分なスラッシュを入れる必要がないことをユーザーに教育します。
于 2008-10-17T19:15:34.560 に答える
0

リンクを修正してください!

二重スラッシュが表示されているのは、ハードコードされているか、スクリプトが生成されているかのいずれかで、自分のサイトに誤ったリンクがあるためです。http://example.com/+を連結するスクリプトで誤ってこれを行うのは簡単/page.aspxです。これらのタイプの連結には細心の注意を払ってください。

IIS は余分なスラッシュを消去するため、ASP.NET コードまたは HttpModule でこれに対処することはできません。余分なスラッシュは、IIS ログ ファイルにも記録されません。IIS7 と telnet を使用してテストしたところ、ログまたは ASP.NET に余分なスラッシュを取得できませんでした。

元の質問に IE のみが関係しているように見える理由がわかりません。IE と FF の両方で、URL に追加のスラッシュを使用でき、それらを送信しているように見えますが、検証にパケット スニッフィングは使用しませんでした。

于 2012-01-24T01:18:31.150 に答える