0

作为防止盗链的预防措施,我一直在使用以下规则将具有错误引荐来源的人重定向到我们的徽标而不是实际图像:

    #Naughty hotlinkers
    RewriteCond %{REQUEST_FILENAME} .*jpg$|.*gif$|.*png$ [NC]
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !sitedomain\.com [NC]
    RewriteCond %{HTTP_REFERER} !google\. [NC]
    RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
    RewriteRule (.*) assets/hotlinked/logo.jpg [L]

它适用于图像。

我正在编写可怕的包装代码来保留嵌入在我们用户内容中的图像,它们的 src 指向一个用于过滤请求和提供图像的 php 文件。尽管不再以这种方式提供新图像,但我们确实需要确保之前上传的图像仍然可以从旧地址获得。

尽管图像仍然需要可访问,但该文件也需要防止盗链。

我试过这个:

    #Naughty hotlinkers
    RewriteCond %{REQUEST_FILENAME} .*jpg$|.*gif$|.*png$|.*gp2\.php.* [NC]
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !sitedomain\.com [NC]
    RewriteCond %{HTTP_REFERER} !google\. [NC]
    RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
    RewriteRule (.*) assets/hotlinked/logo.jpg [L]

但没有骰子。

我要保护的文件在图像的 src 中使用,例如:

    http://sitedomain/legacy/gp2.php?p=long_stupid_string

请一位apache大师告诉我我在这里做错了什么愚蠢的事情?

编辑:

我在这里测试防盗链:

(图片)这里

(php)和这里

4

1 回答 1

0

解决方案

    RewriteCond %{REQUEST_FILENAME} .*(jpg$|gif$|png$|gp2\.php.*) [NC]
于 2010-09-01T09:05:14.443 回答