在php中隐藏图像的真实路径是可能的吗?
在我的web服务器中,我有这些文件。我不希望用户找到我到“在php中隐藏图像的真实路径是可能的吗?,php,server,Php,Server,在我的web服务器中,我有这些文件。我不希望用户找到我到“p1.jpg”和“p2.jpg”的真实路径 当我在“index.php”中显示“p1.jpg”时,如何将原始路径“/images/p1jpg”隐藏到类似这样的“/photo/p1.jpg”中。可能吗?使用 我对Apache重写没有太多经验,但您可以在该目录中创建一个.htaccess文件,其中包含一行内容,如下所示: RewriteRule ^/photos/(.+).jpg$ /images/$1 [R] 在我看来,这有两
p1.jpg
”和“p2.jpg
”的真实路径
当我在“index.php
”中显示“p1.jpg
”时,如何将原始路径“/images/p1jpg
”隐藏到类似这样的“/photo/p1.jpg
”中。可能吗?使用
我对Apache重写没有太多经验,但您可以在该目录中创建一个.htaccess
文件,其中包含一行内容,如下所示:
RewriteRule ^/photos/(.+).jpg$ /images/$1 [R]
在我看来,这有两个部分 1) 使图像/的内容隐藏 2) 这样,用户就可以访问照片/somefile.jpg,并让服务器提供图像/somefile.jpg 1)隐藏图像内容/ 在images/中创建一个
.htaccess
文件,并将以下内容放入其中
Order allow,deny
Deny from all
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_.-]+).jpg$ photo.php?image_name=$1
2)为文件提供服务
在照片/中创建一个.htaccess
文件,并将以下内容放入其中
Order allow,deny
Deny from all
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_.-]+).jpg$ photo.php?image_name=$1
并在photos/目录中创建php文件photo.php
<?php
if(isset($_GET['image_name'])){
if(file_exists("../images/" . $_GET['image_name'].".jpg")){
header('Content-Type: image/jpg');
readfile("../images/" . $_GET['image_name'].".jpg");
}
}
尝试使用.htaccess
文件并进行Apache重写:查看.htaccess和mod_rewrertequestion:为什么?!这样做的目的是什么?知道文件的“真实位置”有什么好处?这会给你带来什么问题?你能描述一下应用这个代码后会发生什么吗?或者你能推荐一个了解.htaccess文件的最佳来源吗。@Thusitha请单击我在答案中发布的链接。另外,查找正则表达式。虽然这是一个有效的解决方案,但在这里拖出PHP有什么好处?除非你在做一些额外的身份验证逻辑,否则PHP正在做Apache可以做的同样的工作,但在这个过程中使用了更多的资源。这一点是正确的,纯粹从我自己的PHP经验(以及缺乏Apache更复杂部分的经验!)来看,我已经用PHP完成了这项工作,但我完全同意,如果单独使用Apache是可能的,那么就这样做吧;你只是想重写URL。再加上你对原始URL的阻塞就可以了。话虽如此,我仍然在质疑为什么有人需要从这个开始的整个前提。我避免了重写过程,只为这个过程创建了IMAGE.PHP,效果非常好!。我需要隐藏图像名称,因为这些名称引用了我们客户的ID,我们预先提供了隐藏这个“内部”信息,因此为了达到这个目的,ID被加密发送,IMAGE.PHP在调用真正的图像之前对它们进行解密。调用图像->