RewriteMap无法阻止热链接

时间:2017-03-26 21:58:05

标签: .htaccess mod-rewrite hotlinking rewritemap

我试图阻止热链接图像并动态地在txt文件中通过RewriteMap添加允许的主机,但不幸的是条件不起作用。

这是VirtualHost的代码

<VirtualHost *:80>
    DocumentRoot D:\XAMPP\htdocs\test\base
    ServerName base.test.dev
    RewriteEngine On
    RewriteMap allowedhosts "txt:D:\XAMPP\htdocs\test\base/rules.txt"
</VirtualHost>

以下是htaccess代码

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^${allowedhosts:$1} [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|png)$ - [F]

以下是主机允许访问图像的txt文件行

http(s)?://(www\.)?base.test.dev

请有人帮帮我。

感谢。

1 个答案:

答案 0 :(得分:0)

来自RewriteMap

  

<强> TXT

     

包含空格分隔的键值对的纯文本文件,每行一个。

问题似乎是关键部分,即捕获的图像类型,例如gif|jpg|jpeg|bmp|png之一。

您可以将引荐来源作为密钥,并为未知/无效主机使用默认值

RewriteCond ${allowedhosts:%{HTTP_REFERER}|NOT_ALLOWED} NOT_ALLOWED
RewriteRule \.(?:gif|jpg|jpeg|bmp|png)$ - [F]

这将如下工作:在地图中查找HTTP_REFERER。如果在地图中找不到,则返回默认值NOT_ALLOWED,条件为真。在这种情况下,将返回403 Forbidden