Правило перезаписи URL в IIS 7 для изображений, на которые не ссылается сам веб-сайт

Новое в перезаписи URL с помощью IIS 7. Мне нужно перенаправить на другую страницу для изображений, на которые не ссылается сам веб-сайт. Например, если кто-то введет "www.somesite.com/images/image001.jpg" в свой браузер, он перенаправит пользователя на "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 ответ

Если вы хотите прекратить горячие ссылки и хотите проинформировать об этом пользователя, вы, как правило, хотите отправить фиктивное изображение обратно с текстом о том, что горячие ссылки не разрешены. Перенаправление запроса на страницу с таким сообщением не помогает, так как он, скорее всего, не будет виден пользователю.

Изображения загружаются с тегом , и хотя браузер будет выполнять перенаправления, он всегда будет ожидать получения какого-либо поддерживаемого изображения. Если запрос перенаправлен на HTML-страницу, браузер просто не отобразит изображение или не отобразит значок с полученным недопустимым изображением. Страница, с которой изображение было связано с горячей ссылкой, все еще отображается.

Таким образом, правило переписывания, предложенное Русланом Якушевым, на самом деле является правильным способом справиться с этим. Вы также можете ответить перенаправлением, например, с помощью следующего действия:

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

Но конечный результат будет таким же. Вы не сможете перенаправить главное окно браузера на другую страницу.

Другие вопросы по тегам