Apache:如何阻止访问Gruntfile.js,package.json等文件?

时间:2016-05-13 17:29:04

标签: apache .htaccess http-status-code-404

我有Gruntfile.js和package.json以及文件夹node_modules和.git。 我想阻止访问这些文件和文件夹。在应用程序中,我将index.php作为每个非文件/文件夹请求的大门

这是我的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ index.php?page=$1

并在index.php中

if (isset($_GET['page'] && !file_exists($views.$_GET['page'])) {
    header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
    include $views.'404.php';
}

因此,如果这些私人文件在相应的视图中显示为404,那就更好了

1 个答案:

答案 0 :(得分:-1)

我的解决方案是使用一个简单的RewriteRule从index.php重定向到每个私有文件和文件夹的404视图

RewriteEngine On
RewriteRule ^Gruntfile\.js$ index.php?page=404 [L]
RewriteRule ^package\.json$ index.php?page=404 [L]
RewriteRule ^.git/.*$ index.php?page=404 [L]
RewriteRule ^node_modules/.*$ index.php?page=404 [L]

虽然我认为这些文件需要位于根文件夹中,并且index.php位于像public_html这样的子文件夹中,这是唯一的公共文件

此解决方案甚至适用于大写和混合字母。即:

pacKagE.json
gruntfile.js
.GIT/