.htaccess不起认证作用

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
614a
帖子: 42
注册时间: 2006-06-16 2:39

.htaccess不起认证作用

#1

帖子 614a » 2006-06-28 3:48

安装好apache2+php5+mysql+phpmyadmin,创建/usr/share/phpmyadmin目录的链接到/var/www/,把phpmyadmin目录里index.php改为index0.php,并新建.htaccess,内容为

代码: 全选

AuthUserFile /usr/share/phpmyadmin/.htpasswd
AuthName "Authorization Required"
AuthType Basic
require valid-user
用htpasswd命令生成了.htpasswd文件,还修改了/etc/apache2/apache2.conf,加上

代码: 全选

<Directory /usr/share/phpmyadmin>
AllowOverride All
</Directory>
重启之后,http://localhost/phpmyadmin不需认证,直接就列出了目录。
以上步骤都是按英文ubuntu的wiki做的,不知为何不起作用。
614a
帖子: 42
注册时间: 2006-06-16 2:39

#2

帖子 614a » 2006-06-28 16:54

解决了,问题出在目录链接上。

打开默认站点配置文件(修改这就不要修改apache2.conf,因为apache2.conf会include这个配置文件)

代码: 全选

gksu gedit /etc/apache2/sites-available/default
先介绍默认配置

代码: 全选

	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
Options Indexes FollowSymLinks MultiViews 中
Indexed指当没能找到默认网页(如index.htm等)时,将目录内容生成为含子目录、文件超链接列表的网页;
FollowSymLinks指若文件系统存在链接,则用URL访问时也可按链接访问,即若你创建目录A的链接文件到目录B,在B下双击链接文件A就可进入A,同样也可以在URL中用http://....B/A来访问A;
MultiViews大致指服务器端可以根据实际情况进行配置,如在目录下找不到index.htm时会自动寻找index.php,使用同上次访问的某些设置。
AllowOverride 指目录及其子目录是否可以用.htaccess文件控制访问权限
Order allow,deny 指Allow指令在 Deny指令之前被评估。缺省禁止所有访问。任何不匹配Allow指令或者匹配 Deny指令的客户都将被禁止访问服务器。

解决办法,在里面添加

代码: 全选

<Directory /var/www/phpmyadmin>
AllowOverride All
Order allow,deny
allow from 127.0.0.1
</Directory>
首先<Directory ...>的目录路径是apache实际访问时的路径,因为我是给phpmyadmin做了一个链接到/var/www/,所以apache访问phpmyadmin是通过/var/www/phpmyadmin而不是/usr/share/phpmyadmin。而且如果你在多处用了链接,如还有目录链接/var/www/admin/phpmyadmin,你就要再写一个<Directory...>
其次,因为/var/www设置了allow from all,如果我们只想让本机访问phpmyadmin,那就要覆盖掉原设置,

代码: 全选

Order allow,deny
allow from 127.0.0.1
还要设置phpmyadmin及其子目录允许.htaccess文件控制访问权限

代码: 全选

AllowOverride All
apache相关命令
关闭apache

代码: 全选

sudo /usr/sbin/apache2ctl stop
启动apache

代码: 全选

sudo /usr/sbin/apache2ctl start
重启apache(有时候重启不会改变设置,要先关闭、再启动)

代码: 全选

sudo /usr/sbin/apache2ctl restart
重启firefox、apache再访问就起效了。

如果phpmyadmin启用了.htaccess权限控制,没有在上级目录列表中出现,就通过URL直接访问http://localhost/phpmyadmin

apache等的详细文档http://w.yi.org/ftp/FAPM/
回复