htaccess阻止所有子目录的直接访问

时间:2014-02-27 14:01:41

标签: apache .htaccess mod-rewrite

开发基于MVC模式的CMS。 我想避免直接访问我的子文件夹和文件 我在根文件夹中有这个.htaccess文件:

php_flag display_errors On
php_value error_reproting 9999

<IfModule mod_rewrite.c>  
   RewriteEngine on
   SetEnv HTTP_MOD_REWRITE On
   RewriteBase /lmvc_trunk/

   Options -Indexes

   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-l
   RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
</IfModule>

页面请求如下:http://mydoamin.com/pages/details/15。这将加载“pages”控制器并调用它的方法“details”并将15作为参数传递(pages_controller-&gt; details(15))

“Options -Indexes”将阻止用户列出例如/ library目录。但是如果我在浏览器中键入http://mydoamin.com/library/Bootstrap.php,它将加载php脚本。我知道如果我将一个带有“全部拒绝”的.htaccess文件添加到一个可以解决这个问题的子文件夹,但是没有比将这个htaccess文件放到我的所有子文件夹更好的解决方案吗?我可以以某种方式阻止从根目录中的htaccess直接访问子文件夹和文件吗?

如果我能将直接文件和文件夹请求重定向到索引/ 404会更好,这样用户甚至不知道是否有名为eg / library的文件夹

我是htacces的新手并重写。任何解决方案?

1 个答案:

答案 0 :(得分:0)

将此规则作为第一条规则

RewriteCond %{THE_REQUEST} \s/+[^/]+/\S+
RewriteRule ^ - [F,L]