通过htaccess预防hotlinking不起作用

时间:2014-11-21 00:25:12

标签: wordpress .htaccess

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mysite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mysecondsite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://imgur.com/gallery/tASrcBw [NC,R,L]

我正在使用wordpress并将上面的代码粘贴到我的htaccess中,但我仍然看到其他网站使用我托管的图片。为什么呢?

1 个答案:

答案 0 :(得分:1)

您当前的重写配置允许任何人通过在地址栏和HTTP_REFERER标题will not be set中输入其网址来直接访问您的图片,从而使您的第一个条件失败。

# Check other conditions and rewrite rule only if %{HTTP_REFERER} is NOT empty
RewriteCond %{HTTP_REFERER} !^$

除非您使用AND标记,否则您的条件将隐含[OR]。当第一个条件失败时,将不会测试其他条件,并且不会重定向到imgurl消息。

修正:

RewriteEngine on

# If this condition is true, skip the other conditions and redirect
RewriteCond %{HTTP_REFERER} ^$ [OR]

# Redirect to imgurl only if image requests are NOT from own site references
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mysite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mysecondsite.com [NC]

# Do the redirection for images
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/tASrcBw.png [NC,R=302,L]