.htaccess拒绝从网站上的所有访问

时间:2015-05-17 20:19:50

标签: php .htaccess file-access

我有一个PHP文件:index.php位于我的web目录的根目录(某些内容):

<?php 
  echo '<div>
    <img src="images/test.png">
  </div>';
?>

我在&#39; images /&#39;中有一个.htaccess文件。包含以下内容的目录:

deny from all

据我了解,这应允许<img src="images/test.png">显示在网页上,但不应允许用户直接访问test.png文件,如下所示:www.example.com/images/test.png(我希望这样抛出一个禁止的错误或沿着这些方向的东西)。

不幸的是,上述内容导致图片无法显示在index.php上,以及图片未通过直接网址显示:www.example.com/images/test.png。如果我删除.htaccess文件,图像显示正常,但可以通过直接URL访问。

为什么这不能按预期工作的任何想法?

1 个答案:

答案 0 :(得分:1)

你好/你错过了阻止访问包含的php文件(在服务器端处理)和php引用的图像之间的巨大区别。我能想到的最简单的解决方案是让你的php文件打开图像并将其作为图像返回。

类似的东西:

<?php 
  //Do whatever checking you want
  $im = file_get_contents("images/example.png");
  header("Content-type: image/jpeg");
  echo $im;  
  ?>

请注意,这仍然允许知道php文件名称的人获取图像等;所有这一切都是给你一个检查PHP代码的地方(检查的例子是http_referer检查,如果你想阻止人们从#34;热链接&#34;图像)