.htaccess 在 mvc 架构中保护管理目录
.htaccess to secure admin directory in mvc architecture
我正在尝试制作一个具有 mvc 结构的网站。我有这个:
www/
博客/
- 应用/
- 管理员/
- 控制器/
- 型号/
- 查看/
- 配置/
- 正面/
- 控制器/
- 型号/
- 查看/
- 资产/
- 图片/
- 库/
投资组合/
我在根 (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
我正在尝试制作一个具有 mvc 结构的网站。我有这个:
www/
博客/
- 应用/
- 管理员/
- 控制器/
- 型号/
- 查看/
- 配置/
- 正面/
- 控制器/
- 型号/
- 查看/
- 管理员/
- 资产/
- 图片/
- 库/
- 应用/
投资组合/
我在根 (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