拒绝访问php页面,但仍然可以将其包含在内


deny access php page but still make it possible to be included

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

也许你可以试试这个:

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

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

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

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

你可以通过多种方式实现这一点,但互联网术语称之为"热链接"。你可以使用这个工具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]