我的网站上有一个文件夹用于缓存大型 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" />
行中得到了错误的正则表达式,有什么想法吗?
您可以为此构建一个
HttpModule
。有一篇博客文章准确描述了我认为您想要做的事情:
HttpModule 用于阻止 ASP.NET 中的外部引荐来源网址
编辑:当然,我只是在这里改变关于
web.config
的规则。您必须使用外部模块,但是您可以仅从 web.config
引用它,而无需修改任何代码。
编辑2:如果你想使用重写规则来做到这一点,你必须改变你的模式,如下所示:
<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>
您能分享一下您的工作代码吗?