Php 如果用户试图直接访问,请在页面中打开图像

Php 如果用户试图直接访问,请在页面中打开图像,php,.htaccess,Php,.htaccess,我在Facebook上注意到的一件事是,当你直接访问图像/视频时,你可以查看它,即使上传者指定你看不到它 所以我在想。是否可以将直接访问的任何图像(例如www.example.com/img.jpg)重定向到打开该图像的页面?假设您要访问www.example.com/img.jpg,它将重定向到该图像的特定页面(该页面可能以该图像或其他名称命名,就像重定向到www.example.com/img.php) 我想可以用.htacces来完成,但我在这方面还不在行 有人曾经实现过这一点,并且知道这

我在Facebook上注意到的一件事是,当你直接访问图像/视频时,你可以查看它,即使上传者指定你看不到它

所以我在想。是否可以将直接访问的任何图像(例如
www.example.com/img.jpg
)重定向到打开该图像的页面?假设您要访问
www.example.com/img.jpg
,它将重定向到该图像的特定页面(该页面可能以该图像或其他名称命名,就像重定向到
www.example.com/img.php

我想可以用.htacces来完成,但我在这方面还不在行

有人曾经实现过这一点,并且知道这是否可能吗?

类似这样的事情:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com/ [NC]
RewriteRule ^(.*)\.(jpe?g|gif|png)$ /$1.php [L,R]
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com/ [NC]
RewriteRule ^(.*\.(jpe?g|gif|png))$ /image_page.php?image=$1 [L,R]
将对站点(www.example.com)未引用的图像的任何请求重定向到该图像的名称,但改为使用
.php
扩展名

当然,这只适用于以每个图像命名的php文件。如果只需要一个脚本来处理所有图像(如果图像较多,可能会更容易),可以执行以下操作:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com/ [NC]
RewriteRule ^(.*)\.(jpe?g|gif|png)$ /$1.php [L,R]
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com/ [NC]
RewriteRule ^(.*\.(jpe?g|gif|png))$ /image_page.php?image=$1 [L,R]
您将有一个脚本
image\u page.php
获取
$\u GET[]
参数“image”。您可以输出链接到图像的页面

如果您不想重定向浏览器,只需删除方括号内的
,R
标志即可