Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何使用.htaccess HTTP\u host和HTTP\u REFERER动态防止热链接(无需硬编码主机域)_Apache_.htaccess_Dynamic_Hotlinking - Fatal编程技术网

Apache 如何使用.htaccess HTTP\u host和HTTP\u REFERER动态防止热链接(无需硬编码主机域)

Apache 如何使用.htaccess HTTP\u host和HTTP\u REFERER动态防止热链接(无需硬编码主机域),apache,.htaccess,dynamic,hotlinking,Apache,.htaccess,Dynamic,Hotlinking,我想知道如何在不硬编码域名的情况下防止热链接到我网站上的资源 我需要这个,因为该软件将用于多个域,并可能作为一个安装使用。指示每个用户在htaccess文件中进行更改以进入其当前域是不可行的 我遇到过很多类似的代码。但是在这里你可以看到你必须输入域名 RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !www.example.com [NC] RewriteRule \.(gif|jpg|png)$ - [F,NC] 我还遇

我想知道如何在不硬编码域名的情况下防止热链接到我网站上的资源

我需要这个,因为该软件将用于多个域,并可能作为一个安装使用。指示每个用户在htaccess文件中进行更改以进入其当前域是不可行的

我遇到过很多类似的代码。但是在这里你可以看到你必须输入域名

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !www.example.com [NC]
RewriteRule \.(gif|jpg|png)$ - [F,NC]
我还遇到了下面的片段,它似乎解决了这个问题。但由于某些原因,它无法工作

RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"
RewriteRule ^/images - [F]
注意:我已经设置了一个本地域名来执行测试。因此,我以mysite.local而不是localhost/mysite访问我的站点


有没有一种方法可以防止热链接,而不必在htaccess中硬编码域名?

查看2.2文档,我认为它实际上比2.4要简单得多。但要确定的是:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !%{HTTP_HOST} [NC]
RewriteRule ^/images - [F]

看看2.2文档,我认为它实际上比2.4中简单得多。但要确定的是:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !%{HTTP_HOST} [NC]
RewriteRule ^/images - [F]

刚刚意识到上面从apache页面给出的代码是针对apache 2.4版的。虽然我的本地计算机上有2.2版。关于第一个参数的快速澄清:您是说图像需要对某些域可用,而不是所有域(您的服务器充当那些白名单域的图像服务器)还是整个站点将是可移植的,图像和所有,你想避免热链接,而不管站点被“安装”在哪里。将由不同的客户端用于不同的目的。除了一些社交网站,比如facebook、google,当然还有安装它的域名,这些图片和其他资源都需要受到保护,不受热链接的影响。我刚刚意识到上面从apache页面给出的代码是针对apache 2.4版的。虽然我的本地计算机上有2.2版。关于第一个参数的快速澄清:您是说图像需要对某些域可用,而不是所有域(您的服务器充当那些白名单域的图像服务器)还是整个站点将是可移植的,图像和所有,你想避免热链接,而不管站点被“安装”在哪里。将由不同的客户端用于不同的目的。除了一些社交网站,比如facebook、google,当然还有安装它的域名,这些图片和其他资源都需要受到保护,不受热链接的影响。对于任何其他网站。很抱歉,此处存在复制和粘贴错误。仍然在检查是否需要前后斜杠。我不明白为什么上面的方法不起作用,因为
%{HTTP_HOST}
应该解析为
www.example.com
(在他们的示例中)。正如我所知,您不能在
rewritecond
的两个参数中都使用服务器变量。我尝试过这种方法,但它不起作用。还有,当url输入为时会发生什么,以及如何处理?。注意:我还添加了一个重写规则来执行301重定向以从域中删除www。很抱歉,这里有一个复制和粘贴错误。仍然在检查是否需要前后斜杠。我不明白为什么上面的方法不起作用,因为
%{HTTP_HOST}
应该解析为
www.example.com
(在他们的示例中)。正如我所知,您不能在
rewritecond
的两个参数中都使用服务器变量。我尝试过这种方法,但它不起作用。还有,当url输入为时会发生什么,以及如何处理?。注意:我还添加了一个重写规则来执行301重定向,以从域中删除www。