2017-07-08 78 views
0

我想用mvc結構製作網站。我有這樣的:。htaccess在mvc架構中保護管理員目錄

  • WWW/

    • 博客/

      • 應用程序/
        • 管理/
          • 控制器/
          • 模型/
          • 視圖/
        • 配置/
        • 前/
          • 控制器/
          • 模型/
          • 視圖/
      • 資產/
      • 圖像/
      • 庫/
    • 圖集/

我在根目錄的第一htaccess的網站(www /)爲Gzip壓縮和東西。 我有我的博客第二的.htaccess(通過www /博客/)我非常基本的重定向系統:

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=$1 [QSA] 

在WWW 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 /博客/的.htaccess:

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

回答

0

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

+0

謝謝納迪爾的回答。在這種MVC架構中,是否有比使用htaccess在密碼保護/保護admin文件夾更好的方法? – Syl

+0

Syl,htaccess密碼保護使用基本或SHA-1加密。這兩種加密方法都很弱並且易於解密。建議通過SSL連接使用htaccess密碼保護。保護管理區域的另一個選項是基於用戶名和密碼實現自定義安全登錄方案 –

+0

感謝您提供此信息Nadir – Syl