htaccess阻止hotlink也阻止外部链接

时间:2013-04-19 17:47:12

标签: apache .htaccess

我在.htaccess文件中有这个代码,以防止图像和pdf文件的热链接,但它也阻止了正常的外部链接工作。 我的htaccess文件:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mywebsite.com/.*$ [NC]
RewriteRule .*\.(gif|jpg|pdf|png)$ http://www.mywebsite.com/images/notallowed.jpe [NC,R,L]

问题是,说出pdf文件的合法外部链接将导致替换图像而不是pdf文件。 ¿这是正常的还是我做错了什么/失踪了? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

我试试看......

RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^https?://(?:www\.)?mywebsite\.com(?:$|/) [NC] [OR]
# Repeat the next line as needed for each allowed site
RewriteCond %{HTTP_REFERER} !^https?://(?:www\.)?allowedsite1\.com(?:$|/) [NC] [OR]
RewriteCond %{HTTP_REFERER} !^https?://(?:www\.)?allowedsite2\.com(?:$|/) [NC]
RewriteRule ^(.*)\.(gif|jpg|pdf|png) http://www.mywebsite.com/images/notallowed.jpe [NC,R,L]

手动添加每个允许的网站可能有点不方便,但应该给你一些控制权......其他可能的缺点是访问原始图像的人会有通过网站内现有的链接进行此操作。

示例:在浏览器中输入http://www.mywebsite.com/logo.png并尝试直接查看文件logo.png无效,您不应该如果单击<a href="http://www.mywebsite.com/logo.png"><img src="http://www.mywebsite.com/logo.png" /></a>,则在查看同一文件时出现问题。

希望有人帮助......

答案 1 :(得分:0)

改为使用SetEnvIf

SetEnvIf Referer ^http remote

<FilesMatch "\.(png|gif|jpg|pdf)">
  order deny,allow
  deny from env=remote
  allow from all
</FilesMatch>