2

我的网站上有一个用于缓存大型 Flash 电影的文件夹,我想阻止其他人将它们嵌入他们的网站;我想尝试web.config仅使用该文件来执行此操作。怎么可能做到这一点?

我第一次尝试规则(不起作用):

以下规则应该阻止公共访问(和嵌入)缓存文件夹“CurrentCache”中的 .swf 文件 - http://myurl.com/ContentCache/并提供替换电影“NoEmbedFromCacheSWF.swf”。

<rule name="Prevent SWF hotlinking" enabled="true">
      <match url="^(ContentCache)(.swf)$" ignoreCase="true" />
      <conditions>
        <add input="{HTTP_REFERER}" pattern="^http://(.*\.)?myurl\.com/.*$" negate="true" />
      </conditions>
      <action type="Rewrite" url="/Content/Flash/NoEmbedFromCacheSWF.swf" />
    </rule>

提前致谢!

注意:我认为我的正则表达式错误<match url="A swf inside /ContentCache/" ignoreCase="true" />,有什么想法吗?

4

1 回答 1

3

HttpModule您可以为此构建一个。有一篇博客文章准确描述了我认为你想做的事情:

HttpModule 在 ASP.NET 中阻止外部引用

编辑:当然我只是在这里弯曲规则web.config。您必须使用外部模块,但是您可以使用它web.config仅引用 from 而无需修改任何代码。

Edit2:如果你想使用重写规则来做,你必须改变你的模式,像这样:

<rule name="Prevent SWF hotlinking" enabled="true">   
  <match url="/ContentCache/.*\.swf$" ignoreCase="true" />   
  <conditions>   
    <add input="{HTTP_REFERER}" pattern="^http://(.*\.)?myurl\.com/.*$" negate="true" />   
  </conditions>   
  <action type="Rewrite" url="/Content/Flash/NoEmbedFromCacheSWF.swf" />   
</rule>  

使用的模式是一个正则表达式,你可以在这里阅读它们,你可以在这个网页上测试它们。

于 2012-04-05T15:47:51.220 回答