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

时间:2017-04-03 23:39:12

标签: php .htaccess

我的服务器上有一个名为/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

不幸的是,这条线也阻止了我的重写规则。

1 个答案:

答案 0 :(得分:0)

尝试在htaccess

的顶部添加此内容
RewriteEngine on

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

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

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