解决在Apache上如何针对某个特定的目录设置访问认证?
2011年12月14日星期三 | | |在Apache上如何针对某个特定的目录设置访问认证?
解决方法:
在Apache内部已经包含了针对任何目录的保护设置. 密码保存在加密文件里面. 但是,如果您的网站没有使用SSL,您的用户名和密码在传输的过程中是以明文的方式传输的.因此,强烈推荐您在限制某些区域的访问时,使用SSL加密您的网站.
在本文中,假设您的网站的根目录是/var/www/html,您希望保护的目录是/var/www/html/private.
首先,编辑/etc/httpd/conf/httpd.conf文件. 在<Directory /var/www/html>设置章节里面找到AllowOverride,默认情况下,配置如下:
AllowOverride None
改变上面的设置到:
AllowOverride AuthConfig
重新启动web服务:
service httpd restart
下一步, 创建一个.htaccess文件告诉apache来限制某个目录的访问. .htaccess文件应该放在您要保护的目录下面. 例如,在/var/www/html/private目录下面,建立一个文件.htaccess:
# /var/www/html/private/.htaccess AuthName "Private Directory" AuthType Basic AuthUserFile /var/www/.htpasswd require valid-user
下一步是创建密码文件. 使用htpasswd命令创建密码文件.建议把密码文件不要放在web服务的目录下面.
htpasswd -c /var/www/.htpasswd username
"username"是要访问private目录的用户名.提示,这里创建的用户名只是用来访问被限制的目录,不需要是系统帐号. -c 选项只是在第一次创建帐号的时候使用.
打开浏览器,访问http://yourhostname.com/private,将会弹出一个输入框,让您输入用户名和密码