我试图阻止热链接图像并动态地在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
请有人帮帮我。
感谢。
答案 0 :(得分:0)
<强> 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
。