2

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

4

2 回答 2

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>

希望对某人有所帮助...

于 2013-04-19T20:39:50.880 回答
0

改用SetEnvIf

SetEnvIf Referer ^http remote

<FilesMatch "\.(png|gif|jpg|pdf)">
  order deny,allow
  deny from env=remote
  allow from all
</FilesMatch>
于 2013-10-08T20:56:43.113 回答