2016-08-24 104 views
0

我有一个web应用程序,用于管理文件/上传中的jpg图像。我想拒绝访问url:domain.com/upload/image.jpg中的所有图片/上传,但授予访问/page.php的权限。我试过/upload/.htaccess,但它也拒绝访问我的/page.php文件。如何拒绝访问目录中的所有文件,但允许从其他目录中的特定php文件访问?

有什么建议吗?

+0

如何'page.php' “负荷” 的形象呢?通过阅读图像(使用'fopen()'或其他)并返回图像数据或通过简单链接到'/ upload/image.jpg'? –

+0

创建子文件夹图像并将其中的所有图像尝试重定向匹配。把page.php放在upload/page.php中。 RedirectMatch ^/upload/images/$ http://example.com/ – Rahi

+0

感谢回复@JonLin图片通过链接加载/upload/image.jpg –

回答

0

获得的图像被联系起来/upload/image.jpg

如果您是从page.php产生的,然后使用htaccess的阻止它的唯一办法内容联系起来装是检查“Referer”(原文如此)头文件。这个头部信息由浏览器发送,让服务器知道哪个URL告诉它加载该资源。如果有人直接转到图片,引用者可能是空白的(例如,如果他们在URL地址栏中键入)或者从page.php链接,那么引用者会说/page.php。然而,查阅者很容易被伪造,所以这不是阻止访问的可靠手段。

在htaccess文件在你的文件夹/upload/尝试添加:

RewriteEngine On 
RewriteCond %{HTTP_REFERER} !/page\.php$ 
RewriteCond %{REQUEST_URI} !\.php$ 
RewriteRule^- [L,F] 
+0

我将此添加到我的.htaccess文件: 'RewriteEngine叙述在 的RewriteCond%{HTTP_REFERER} /页\ $ .PHP 的RewriteCond%{REQUEST_URI} \ PHP $'重写规则^ - [L,F]!。 ' **显然加了我的页面名称 **清除了我的缓存 PHP页面就像一个魅力,但我仍然可以在地址栏中键入URL并获取图像。 –

+0

@BryanJ如果你已经加载了图像,它会被缓存。你有没有尝试清除缓存,然后试图直接去图像? –

+0

是的,我清除了我的缓存。 –

相关问题