防止热链接不起作用 IIS 10 - Windows 服务器 2016

Prevent Hotlinking not working IIS 10 - Windows server 2016

我不知道如何防止 IIS 10 上的热链接 - web.config。 我在 google 上找到了解决方案,但它似乎不起作用,这是我的代码:

            <rule name="Hotlinking Preventing" stopProcessing="true">
                <match url=".*\.(png|jpe?g|gif)" />
                <conditions>
                    <add input="{HTTP_REFERER}" pattern="^$" negate="true" />
                    <add input="{HTTP_REFERER}" pattern="^https?://(m\.)?domain\.com/.*$" negate="true" />
                </conditions>
                <action type="Rewrite" url="/assets/images/hotlinking.png" />
            </rule>

有什么想法:(? 非常感谢。

作为网站开发者,有时不希望自己网站上的图片被直接引用到别人的网站上。在某些情况下,它可能会导致我们的数据中心占用大量网络带宽,这意味着我们要为使用我们的图像的人付费。

例如,您的网站是 www.sample1.com,您在 http://www.sample1.com/test.jpg 上有一张图片,而 www.sample2.com 使用了您在 www.sample2.com 上的图片他们 HTML 中的一个标记,它会导致网络请求进入您的服务器并消耗您的资源。

如果用户登陆 www.sample2.com 访问 http://www.sample1.com/test.jpg,对于 www.sample1.com 的 Web 服务器,针对此特定图像的 HTTP 请求将有一个名为"referer" 的值为“http://www.sample1.com...”。这是我们将检查并阻止请求的地方。

url 重写规则:

 <rule name="Prevent Image Hotlinking">
<match url=".*\.(jpg|jpeg|png|gif|bmp)$" />
<conditions>
                    <add input="{HTTP_REFERER}" pattern="^$" negate="true" />
                    <add input="{HTTP_REFERER}" pattern="^http://www.sample1.com/.*$" negate="true" />
</conditions>
<action type="Rewrite" url="/img/no_hotlinking.png" />

如果还是不行,请尝试禁用缓存并重试。

如果您想屏蔽多个站点,那么您也可以使用重写映射并设置站点列表。

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Blacklist block" stopProcessing="true">
          <match url="(?:jpg|jpeg|png|gif|bmp)$" />
          <conditions>
              <add input="{HTTP_REFERER}" pattern="^https?://(.+?)/.*$" />
              <add input="{DomainsBlackList:{C:1}}" pattern="^block$" />
              <add input="{REQUEST_FILENAME}" pattern="splog.png" negate="true" />
          </conditions>
          <action type="Redirect" url="http://www.hanselman.com/images/splog.png" appendQueryString="false" redirectType="Temporary"/>
      </rule>
    </rules>
    <rewriteMaps>
              <rewriteMap name="DomainsBlackList" defaultValue="allow">
                  <add key="google-chrome-browser.com" value="block" />
                  <add key="www.verybadguy.com" value="block" />
                  <add key="www.superbadguy.com" value="block" />
              </rewriteMap>
    </rewriteMaps>
  </rewrite>
</system.webServer>