拒绝访问php页面,但仍然可以包含它

时间:2016-06-24 15:27:29

标签: php html .htaccess access

我目前正在运行一个PHP网站,我想知道是否有任何方法可以拒绝访问图像,如果目录是在浏览器栏中输入的,但仍然可以在我的页面中使用所述图像<img src="">标记。 我将所述图像存储在名为&#34; images&#34;的目录中。这与我的主页&#34; home.php&#34;处于同一水平。我熟悉.htaccess文件和deny from all命令,但正如我所说,它不会显示“禁止”#39;其他页面中的文件。我希望有人可以帮助我。谢谢!

3 个答案:

答案 0 :(得分:1)

也许你可以试试这个:

<Files "./your_directory/yourfile.png">
Order Allow,Deny
Deny from all
</Files>

答案 1 :(得分:0)

基本上,我认为答案是“不”,因为在两种情况下用户的浏览器是发出请求的一方。 Apache可能不知道或无法区分浏览器提出此类请求的两个“原因”。

另一方面,主机端应用程序中的程序代码可能直接或使用mod_rewrite技巧,您可以将传入请求定向到服务器端脚本,它可以检查整个HTTP请求并确定它应该产生什么样的响应:图像内容,或404.在这种情况下,Apache接受请求...不Deny它...而是直接为图像提供服务,它将一个脚本交给做出该决定的脚本。 (该脚本仍然可以吞噬文件中的数据,可能来自Apache根本不会直接提供的目录,因此它可以“相当快”。)

顺便说一句:您可以在<Directory><Location>级别使用指令强制“将此请求移交给此类脚本”行为因此,当用户的浏览器“请求这样的图像”时,Apache会运行该处理程序脚本,而是传递包含所请求文件名称的URL。用户将无法知道实际发生了什么。)

答案 2 :(得分:0)

你可以通过多种方式实现这一目标,但互联网行话称为&#34; hotlinking&#34;。您可以使用此工具http://www.htaccesstools.com/hotlink-protection/创建自己的.htaccess文件。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]