1

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

这是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

请有人帮助我。

谢谢。

4

1 回答 1

0

RewriteMap

文本

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

问题似乎是关键部分,即捕获的图像类型,例如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将返回 a。

于 2017-03-26T22:21:52.297 回答