CodeIgniter 使用 .htaccess 保护管理控制器

Posted

技术标签:

【中文标题】CodeIgniter 使用 .htaccess 保护管理控制器【英文标题】:CodeIgniter protect admin controller with .htaccess 【发布时间】:2012-09-05 12:24:48 【问题描述】:

我需要设置 .htaccess 规则以保护 CodeIgniter 中的管理控制器。

在 .htaccess 中已经有这样的友好 URL 规则:

RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

如何添加额外的规则来保护 /admin/ 文件夹(控制器)下的所有内容,并使用 Digest 身份验证?

我尝试了各种组合,但没有一个是正确的。以下是我尝试的一些规则,只是为了获得我正在寻找的线索:

# set an environtment variable "doauth" if the request starts with "/admin/"
SetEnvIf Request_URI ^/admin/ doauth=1

AuthType Digest
AuthName "Admin Protected Area"
AuthUserFile /hta/.htdigest

# Here is where we allow/deny
Order Allow,Deny
Allow from all
Require valid-user
Deny from env=doauth
Satisfy any 

【问题讨论】:

【参考方案1】:

试试这个代码来控制对你的管理控制器的访问:

SetEnvIfNoCase Request_URI "^/admin/" doauth

AuthType Digest
AuthName "Admin Protected Area"
AuthUserFile /hta/.htdigest

Require valid-user
Satisfy         any
Order           allow,deny
Allow from      all
Deny from       env=doauth

【讨论】:

以上是关于CodeIgniter 使用 .htaccess 保护管理控制器的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter:是不是可以在不使用 .htaccess 的情况下删除 index.php?

Codeigniter、OpenID 和 .htaccess

使用 .htaccess 文件删除 CodeIgniter 中的 index.php

Codeigniter .htaccess 不忽略目录

.htaccess 问题、虚拟子域和 Codeigniter

使用 www 强制 HTTPS 并在 CodeIgniter 中删除 index.php .htaccess