【问题标题】:htaccess prevent direct acces for all subdirectorieshtaccess 阻止对所有子目录的直接访问
【发布时间】:2014-03-31 00:26:40
【问题描述】:

我正在开发基于 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->details(15))

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

如果我可以将直接文件和文件夹请求重定向到 index/404 会更好,这样用户甚至都不知道是否有一个名为 /library 的文件夹

我是 htacces 和重写的新手。有什么解决办法吗?

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    将此规则作为您的第一条规则

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 2012-08-22
      • 1970-01-01
      • 2023-04-01
      • 2014-01-07
      • 2012-07-28
      • 2011-09-16
      相关资源
      最近更新 更多