2017-04-02 35 views
0

我需要将所有图像重定向到一个php文件,包括路径和文件名。Apache 2.4 - 如何将图像重定向到PHP文件?

想象一下,我的域名是example.com 我可能有https://example.com/art/logo.png,想做到这一点重定向到https://example.com/scripts/image_loader.php?a:art&b=logo.png

所以,我将迫使被重定向到一个PHP文件,该文件将显示图像的任何请求。我这样做是为了控制谁可以访问图像,并防止盗链。 我也希望html文件使用这个重定向并使用php文件来显示图像,例如为包括'img src =/art/logo.png'

我已经做了mod_rewrite使用引用标题方法,但它不工作,我不知道为什么。我假设https协议不在标头中使用引用。

对于PHP我需要知道如何阻止某人盗链我的图像,并将它们作为文件下载。 我可以确定用户是个人还是机器人还是某种网站开膛手?

我知道我无法阻止一个人下载图像。我只是想让他们更难。所以,他们不能简单地下载它们或使用网站开膛手软件。

任何建议将是伟大的。我的网站使用或运行在HTTPS上。许多用于盗链的解决方案仅显示使用http的示例。

回答

0

1.您可以确定请求来自用户或机器人吗?

NYeah,或多或少^^您可以使用UserAgent-Header字段来确定请求是否通过浏览器发送。但问题是你想要将所有站点翻译器(如HTTrack)加入黑名单或将所有常见浏览器列入白名单?两者都将是一个不完整和相当长的名单。

2.如何重写所有影像复制到你的PHP文件

RewriteEngine On 
RedirectRule ^/(.+/(.+\.(jpe?g|gif|png|tif|bmp))$ /scripts/image_loader.php?a:$1&b=$2 

这改写了标准图像的所有请求,如果被叫URI模式遵循您指定的“/path/image.png '至/scripts/image_loader.php?a:path & b = image.png

更新

RedirectRule ^^/(.+/)+(.+\.(jpe?g|gif|png|tif|bmp))$ /scripts/image_loader.php?a:$1&b=$2 

第一个支架(.+)包括服务器名称后面的部分直到最后一个文件名,因此在示例/path/example/image.png中它将包含path/example。第二个支架(.+)仅包含文件名,因此在示例/path/example/image.png中将包含image.png。现在,这两个值分配给目标URL - >

/scripts/image_loader.php?a:path/example&b=image.png 

希望我把你的问题的权利......

+0

你已经尝试了这一建议?刚刚看到你接受了我的'编辑',所以认为你可能会测试它) –

+0

我还没有尝试过,但得到了一个部分的问题:$ 1&b = $ 2什么是$ 1和$ 2像是如何值分配到那个?我需要抓取图像的目录和文件名。然后将其传递给一个php文件。所以本例中的艺术品是该网站中的一个文件夹,而logo.png是该文件。我有2个变量为php文件获取根文件夹后的文件夹路径,然后第二个var是文件名。 – user520108

+0

在我的更新中添加了一个简短的说明 –

相关问题