Назад | Перейти на главную страницу

Правило перезаписи 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>

Все равно как-то объединить правила, чтобы делать то, что я хочу?

заранее спасибо

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

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

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

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

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