.htaccess 在 mvc 架构中保护管理目录

.htaccess to secure admin directory in mvc architecture

我正在尝试制作一个具有 mvc 结构的网站。我有这个:

我在根 (www/) 有第一个 .htaccess 用于 Gzip 压缩和其他东西。 我的博客有第二个 .htaccess(在 www/blog/ 中)和我非常基本的重定向系统:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#QSA permet de garder les paramètres GET et les ajouter à la suite
RewriteRule (.*) index.php?p= [QSA]

www/blog/ 中的文件 index.php 解析 url 并使用正确的控制器,如下所示:

//****************************************************

include_once(APP_f.controller/controller.class.php');
$controlF = new ControleurF();

include_once(APP_b.'controleur/controleur.class.php');
$controlB = new ControleurB();


if (isset($_GET['p'])&&(substr($_GET['p'],0,4)== 'admin')) {
//on est dans l'admin
    $lapage=explode('/',$_GET['p']);
    if (!empty($lapage[1])) {$pp = $lapage[1];} else {$pp="index";}

    if (!isset($pp) OR $pp == 'index')
    { 
        $ctrl = "home"; $p = $ctrl;
    } else { 
        $params = explode('/',$pp); 
        $ctrl = $params[0]; $p = $ctrl;
        if (isset($params[1])) { 
            if ($params[1]<>"") {$p = $params[1];} 
        }   
    }

    $c=$controlB->load($ctrl);
    include_once($c);

}else{
//on est en front
    if (!isset($_GET['p']) OR $_GET['p'] == 'index')
    { 
        $ctrl = "home"; $p = $ctrl;
    } else { 
        $params = explode('/',$_GET['p']); 
        $ctrl = $params[0]; $p = $ctrl;
        if (isset($params[1])) { 
            if ($params[1]<>"") {$p = $params[1];} 
        }   
    }

    $c=$controlF->load($ctrl);
    include_once($c);
}

//****************************************************

一切正常,但我无法理解如何使用 .htaccess/.htpasswd 保护我的管理文件夹 有没有办法在 www/blog/.htaccess 中做类似的事情:

<Directory admin>
AuthUserFile "/home/foobar/www/blog/.htpasswd"
AuthGroupFile /dev/null
AuthName "Admin"
AuthType Basic
Require valid-user
</Directory>

Directory 指令只能用于服务器配置或虚拟主机文件。它不能在 htaccess 文件中使用。在 Apache Directory Directive.

中有描述

要使用 htaccess 密码保护目录,您必须在 .htaccess 文件中输入以下内容:

AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile "/usr/local/apache/passwd/passwords"
Require user rbowen

以上命令将密码保护包含 htaccess 文件的文件夹。命令:htpasswd -c /usr/local/apache/passwd/passwords rbowen 为用户 rbowen 生成密码。 Apache Authentication and Authorization

中有描述

我找到了一个方法:使用 php 的会话 http://www.apprendre-php.com/tutoriels/tutoriel-14-les-sessions.html