我想在特定目录中创建只能访问php的文件,具体情况是,我有一个包含一些子文件夹的文件夹,每个子文件夹包含很多文件(可以是每种类型的文件,如图像,代码,可执行文件等)。现在我构建了一个脚本,以便能够下载文件,这是有效的,但也有可能只去server.com/folder/subfolder/img.jpg
查看图像。这是我不想允许的。
有什么方法可以做到这一点吗?
PS:我正在使用apache2和PHP7运行Ubuntu 14.04服务器。
编辑:问题可能与链接的问题重复,但没有答案适用于我,.htaccess不会更改任何内容,文件夹应保持原样。
如果您想使用文件系统解决这个问题,您必须认识到您在系统方面存在一些重大限制。例如,您的PHP脚本无法作为与Apache相同的用户运行,因此无法在Apache中运行。
如果这是一个硬性要求,我要做的第一件事就是通过fcgi守护进程而不是Web服务器运行PHP脚本,让它作为单独的用户运行,并相应地收紧文件权限。
这样就可以了:
RewriteEngine On
RewriteBase /yourwebsite/
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
ErrorDocument 404 /yourwebsite/404.php
把它放在你的.htaccess中,当有人进入你的网站时,他们只会看到公共文件夹中的内容,但公共文件夹外的所有内容仍然只能通过php访问图像,而且css必须在公共文件夹中,否则用户无法访问看到它,因为他没有权限