拒绝访问文件夹内的文件但允许 REST API

Deny access to files inside folder but allow a REST API

我正在使用这个 .htaccess 来模拟一个充满文件的文件夹(一个简单的 REST API):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule files/(.*)$ api.php?file= [QSA,NC,L]

让我们将这个文件夹命名为 magicfolder,我在其中使用 .htaccess 文件。 事实上,只有 api.php 正在创建请求的每个文件。 所以,像 mysite.com/magicfolder/files/image.jpg 这样的 url 被转换成 mysite.com/magicfolder/api.php?file=image.jpg。 这很棒。但我还想添加一些规则,使用户无法访问 magicfolder(日志甚至 api.php)中存在的任何真实文件。

根据您展示的示例,请您尝试以下操作。请在测试您的 URL 之前清除您的浏览器缓存。确保您的 htaccess 规则文件存在于 magicfolder 文件夹中。

RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [F,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^files/(.*)/?$ api.php?file= [QSA,NC,L]