阻止直接访问文件,但在重写规则中仍允许



我的服务器上有一个名为/files 的文件.php

我不直接访问它,而是使用 .htaccess 并将参数传递给它:

RewriteCond %{REQUEST_URI} ^/robots.txt(?.*)?$
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^ /files.php?file=%{REQUEST_URI} [L]

我想阻止人们直接访问此文件,但仍允许我的服务器在重写规则中使用它。理想情况下,如果用户尝试直接访问它,我想给出 404 错误。我想出了这个:

RedirectMatch 404 ^/files.php

不幸的是,这一行也阻止了我的重写规则工作。

尝试在 htaccess 的顶部添加此内容

RewriteEngine on
RewriteCond %{THE_REQUEST} /file.php [NC]
RewriteRule ^ - [R=404,L]

如果直接访问/file.php,这将返回 404 错误。

%{THE_REQUEST} 对于避免重写循环错误或规则覆盖非常重要。

最新更新