拒绝访问文件夹内的文件但允许 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]
我正在使用这个 .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]