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

时间:2021-05-25 15:53:02

标签: .htaccess redirect mod-rewrite url-rewriting friendly-url

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

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule files/(.*)$ api.php?file=$1 [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)。

1 个答案:

答案 0 :(得分:2)

根据您展示的样品,您可以尝试以下操作吗?请在测试您的 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=$1 [QSA,NC,L]