web-dev-qa-db-ja.com

IIS 7Webサイト自体によって参照されていない画像のURL書き換えルール

IIS 7. Webサイト自体で参照されていない画像については、別のページにリダイレクトする必要があります。たとえば、誰かが「www.somesite.com/images/image001.jpg」と入力すると、URLの書き換えが初めてになります。 「ブラウザに、ユーザーを「www.somesite.com/prevent.aspx?image001.jpg」にリダイレクトします。

ここでホットリンクを防ぐためのいくつかの良いヒントを見つけました: http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx =、これはうまく機能しますが、上記の例から私が望むものとはまったく異なります。

ホットリンクを防ぐためのルールを書き直します。

<rule name="Prevent image hotlinking">
  <match url=".*\.(gif|jpg|png)$"/>
  <conditions>
    <add input="{HTTP_REFERER}" pattern="^$" negate="true" />
    <add input="{HTTP_REFERER}" pattern="^http://ruslany\.net/.*$" negate="true" />
  </conditions>
  <action type="Rewrite" url="/images/say_no_to_hotlinking.jpg" />
</rule>

リダイレクトの書き換えルール:

<rule name="Query String Rewrite">
  <match url="page\.asp$" />
  <conditions>
    <add input="{QUERY_STRING}" pattern="p1=(\d+)" />
    <add input="##{C:1}##_{QUERY_STRING}" pattern="##([^#]+)##_.*p2=(\d+)" />
  </conditions>
  <action type="rewrite" url="newpage.aspx?param1={C:1}&amp;amp;param2={C:2}" appendQueryString="false"/>
</rule>

とにかくどういうわけかルールを組み合わせて私がやりたいことをするのですか?

前もって感謝します

1
Patriotec

ホットリンクを停止してユーザーに通知したい場合は、通常、ホットリンクが許可されていないことを示すテキストを含むダミー画像を送り返します。そのように表示されているページにリクエストをリダイレクトしても、ユーザーには表示されない可能性が高いため、役に立ちません。

画像は<img>タグで読み込まれ、ブラウザはリダイレクトに従いますが、サポートされている何らかの画像を常に受信することを期待します。リクエストがHTMLページにリダイレクトされた場合、ブラウザは単に画像を表示したり、無効な画像を受信したことを示すアイコンを表示したりしません。ただし、画像がホットリンクされたページは引き続き表示されます。

したがって、Ruslan Yakushevによって提案された書き換えルールは、実際にはそれを処理するための適切な方法です。リダイレクトで応答することもできます。次のアクション:

<action type="Redirect" url="http://www.somesite.com/prevent.aspx?{REQUEST_FILENAME}" appendQueryString="false" redirectType="Found" />

しかし、最終的な結果は同じになります。ただし、メインブラウザウィンドウを別のページにリダイレクトすることはできません。

1