使用.htaccess阻止内容即使在允许的域中也无法加载内容

时间:2018-09-11 13:39:54

标签: apache .htaccess mod-rewrite

如果要直接或从不允许的域访问内容,我试图阻止其加载。为此,我使用的是.htaccess。所以,我的逻辑是:

  • 直接访问:空引用。
  • 不允许的域:引荐来源者的域与允许的域不同。

我还必须阻止其他类型的文件。 jpg|jpeg|gif|png|bmp|zip|ppt|pptx|ai|pdf|doc|xls|xlsx|psd|mov|svg

为了提供更多的上下文,内容(以及后面的.htaccess)位于与我希望能够加载内容的域不同的域中。假设内容在x.com中,而我希望能够加载内容在example.com

这就是我的.htaccess

SetEnvIf Referer "^https://www.example.com/" letitpass
Order Deny,Allow
Deny from all
Allow from env=letitpass

ErrorDocument 403 /403.html

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com/.*$ [NC]
  RewriteRule \.(jpg|jpeg|gif|png|bmp|zip|ppt|pptx|ai|pdf|doc|xls|xlsx|psd|mov|svg)$ - [F,NC,L]
</ifModule>

这部分按预期工作。问题在于,即使在允许的域中,PHP或HTML文档中的某些内容(如图像)也无法加载。

结果如下:({{1}的屏幕截图)

  1. 图像example.com/a-page/。它按预期工作。仅在<img src="https://x.com/image.png">
  2. 中加载

enter image description here

  1. 具有example.com文档.pdf的iframe。它按预期工作。仅在<iframe src="https://x.com/file.pdf">
  2. 中加载

enter image description here

  1. 具有example.com文档的iframe。该文档具有img(.php)和pdf文件(x.com/image.png)。 x.com/file.pdf。它无法正常运行。该页面仅在允许的域中加载,这很好,但是图像之类的某些内容未加载

enter image description here

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

OR的排除项中添加逻辑RewriteCond ...以允许嵌入x.com

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?(example|x).com/.*$ [NC]