我的服务器上有一个名为/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} 对于避免重写循环错误或规则覆盖非常重要。