繁体   English   中英

mod_rewrite映像保护

[英]mod_rewrite image protection

因此,我正在建立一个网站,用户可以在其中查看较小尺寸图像的预览,并且他们必须注册才能查看完整分辨率。

我不缩略图图像,我只是加载整个图像,并缩放它。 由于图像是低分辨率的,所以这实际上不是问题。

问题在于用户只需右键单击图像,然后选择“在新选项卡中打开”即可。 我想禁用该功能,以便可以在浏览器中以-tag看到.jpg和.gif文件,但当它们尝试在地址栏中输入路径时则不能。

我在使用Apache。

这可能吗? 提前致谢。

您需要有缩略图版本和大版本。 缩小尺寸时,只能缩小其显示尺寸。 完整尺寸的图像实际上已经在他们的计算机上。

类似于以下内容:

RewriteEngine On
RewriteCond   %{HTTP_REFERER}  !^$
RewriteCond   %{HTTP_REFERER}  !^http://www.yourdomain.com/.*$ [NC]
RewriteCond   %{HTTP_REFERER}  !^http://yourdomain.com/.*$     [NC]
RewriteRule   ^/PublicFiles/*$ /page-about-direct-links.html

未经测试

更改方法:

  1. 如果显示小图像,请不要使用原始图像。 这将花费更长的时间来加载,并且是个坏习惯。 改用缩略图,节省带宽,加快页面速度。

  2. 将原始图片移到Web文件夹的另一侧。 这样,就无法通过链接直接访问它们。

  3. 制作一个php脚本,如果注册了用户,它将加载原始图像。

mod_rewrite无法检查用户是否已注册或登录。 至于Apache,可以使用“ basic authentican ”(但不是执行此操作的最佳方法)。

function getImageFromOutside ( $homePath, $file )
{
    if ( file_exists ( $homePath . '/' . $file ) )
    {
        $contents = file_get_contents ( $homePath . '/' . $file );
        return $contents;
    }
}
$homePath = 'some_path/img';

if ( isset ( $_GET['uid'] ) )
{
    $img = $_GET['uid'] . '.jpeg';
    header ( 'Content-type: image/jpeg' );
    echo getImageFromOutside( $homePath, $img );
} else {
    print_r ( $_GET );
    echo file_exists ( $homePath . '/' . $file );
}

经过测试,具有文件夹结构

    • img
    • 公共html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM