Ale*_*exV 8 .htaccess hotlinking bandwidth-control apache-2.2
我正在尝试编写“终极”反热链接 .htaccess ...
您可以在网上找到许多示例/教程/生成器,但其中许多是错误的或不完整的(甚至两者都有)。
这些是我正在寻找的功能:
这是我迄今为止取得的成就:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|zipx?)$ - [NC,F]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我的问题:
mydomain.com在 .htaccess 中硬编码?(能够将此 .htaccess 部署到我的所有域中而无需为每个域都修改它会很棒。)gif|jpe?g|png|zipx?相当于gif|jpg|jpeg|png|zip|zipx对吗?(对不起,正则表达式还是新手。)对于#1,我知道这是有可能的。我找到的最接近的是这个片段,它从 URL 中删除了 www,而不对域进行硬编码。有没有办法将这种方法用于我的问题#1?
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
更新:
我知道将提供水印图像而不是常规图像的解决方案。但我不是在寻找这种解决方案。我想要一个适用于所有类型的二进制文件(zip、exe、iso、jpg、png、gif...)的通用解决方案(提供 403 错误)。
无论您做什么,您都将“浪费”CPU 周期(要确定引用站点(进行链接的站点)是否获得授权,您必须对请求数据进行一些处理)。
您唯一能做的就是节省带宽,同时浪费最少的 CPU 周期。
Apache Docs中有一些示例可以完全满足您的需求。这个:
SetEnvIf Referer example\.com localreferer
<FilesMatch \.(jpg|png|gif)$>
Order deny,allow
Deny from all
Allow from env=localreferer
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
似乎是最适用的(并且不需要 mod_rewrite 的全部权重)。
您可以使用附加SetEnvIf和Allow指令添加附加的有效引用。
| 归档时间: |
|
| 查看次数: |
4612 次 |
| 最近记录: |