问题描述
我正在使用这个 .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
)。
解决方法
根据您展示的样品,您可以尝试以下操作吗?请在测试您的 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]