Новое в переписывании 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;param2={C:2}" appendQueryString="false"/>
</rule>
Все равно как-то объединить правила, чтобы делать то, что я хочу?
заранее спасибо
Если вы хотите остановить горячие ссылки и хотите проинформировать об этом пользователя, вы обычно хотите отправить обратно фиктивное изображение с текстом, говорящим, что горячие ссылки не разрешены. Перенаправление запроса на страницу с указанием этого не помогает, поскольку, скорее всего, он не будет виден пользователю.
Изображения загружаются с помощью тега <img>, и хотя браузер будет следовать перенаправлениям, он всегда будет ожидать получения какого-либо поддерживаемого изображения. Если запрос перенаправлен на HTML-страницу, браузер просто не отобразит изображение или не отобразит значок, что было получено недопустимое изображение. Тем не менее, страница, с которой была сделана горячая ссылка на изображение, все еще отображается.
Так что правило перезаписи, предложенное Русланом Якушевым, на самом деле является правильным способом справиться с этим. Вы также можете ответить перенаправлением, например, следующее действие:
<action type="Redirect" url="http://www.somesite.com/prevent.aspx?{REQUEST_FILENAME}" appendQueryString="false" redirectType="Found" />
Но конечный результат будет таким же. Однако вы не сможете перенаправить главное окно браузера на другую страницу.