使用 .htaccess 检查推荐人
推荐人检查是一种限制 Web 资源使用方式的机制。具体来说,您可以使用此技术来坚持仅从特定页面或站点查看文件(或者,更确切地说,仅当浏览器说它正在查看您站点上的文件时才查看,无论是否真实)。
通常你会在一个 htaccess 文件中设置一个引用者检查,如下所示:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://www.example.com/.*
RewriteRule .*\.pdf - [NC,F]
第一行打开重写,第二行检查“REFERER”标题(是的,拼写方式)是否不以“<a href="http://www.example.com/" rel="noreferrer ">http://www.example.com/”,第三行将所有以“.pdf”结尾的文件标记为禁止。
这很漂亮,很有用,但它是特定于站点的。您必须更改代码以匹配您的域,有时需要在多个域中应用完全相同的代码。最好检查一下REFERER
标头是否包含与标头相同的域名HOST
。
理想情况下,您可以执行以下操作:
这不起作用
RewriteCond %{HTTP_REFERER} !^http://%{HTTP_HOST}/.*
遗憾的是,您不允许将一个服务器变量与RewriteCond
. 我们可以通过将两个变量放在条件的同一侧,然后将结果与自身进行比较来解决此限制。像这样:
这个工作 - 随意将其复制到您自己的网站上。
RewriteEngine On
RewriteCond %{HTTP_HOST}@@%{HTTP_REFERER} !^([^@]*)@@https?://\1/.*
RewriteRule .*\.pdf [NC,F]
起初这可能有点令人困惑,所以让我们推理一下。在比较的左侧,我们有%{HTTP_HOST}@@%{HTTP_REFERER}
。例如,这将导致这样的字符串:tltech.com@@http://tltech.com/info
。在验证规则的右侧,“<code>^([^@]*)”表示“记住第一个@
符号之前的所有内容。然后我们跳过@@http://
(或可选@@https://
)。然后确保下一位与我们在开始时记住的主机名匹配。然后我们确保后面跟着一个/
标志。就是这样。
本质上,此规则检查HTTP_REFERER
字段中的主机名是否与HTTP_HOST
. 如果不是这样,那么最后一行告诉 apache 阻止指定的文件类型。
酷,嗯?最好的部分是您可以将代码剪切并粘贴到任何主机中,而无需对其进行任何更改。只需确保最后一行与您要限制的文件类型或名称匹配,您就可以了。
来源:http ://tltech.com/info/referrer-htaccess/