Apache htaccess阻止热链接也阻止外部链接

Apache htaccess阻止热链接也阻止外部链接,apache,.htaccess,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/

我在.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文件出现。 这是正常的还是我做错了/错过了什么? 提前谢谢。

我想试试这个

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
不起作用,但是如果单击
,查看同一文件应该不会有问题

希望能帮助某人…

改用:

setenif Referer^http远程
命令拒绝,允许
拒绝来自env=远程
通融

谢谢您的回答。我试过了,但没有!也不行。我真的不明白为什么。是的,实际上我是想编辑这个答案(也许我现在会这样做,只针对其他可能处于类似情况的人),因为我意识到这会阻止所有未被列为“允许”的人(例如第二行的条目)。不可能。它不起作用。让我解释一下。如果我把我的网站的pdf文件放在一个iframe中(在我的网站之外),pdf会被我想要的图像所取代。但是,如果在同一个程序中,我放置了一个类似“target=“\u blank”>的链接,pdf仍然没有显示,它会被我不需要的图像替换。因此,我不认为这是添加更多允许的站点的问题,而是改为更改代码中的其他内容。无论如何,再次感谢。
SetEnvIf Referer ^http remote

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