如何在Apache中使用.htaccess设置基本身份验证
时间:2019-05-19 01:25:44 来源:igfitidea点击:
.htaccess表示 “hypertext access 超文本访问”。
这是默认的Apache目录级配置文件.
.htaccess可以用来保护web服务器中的特定目录。
最常见的一种用法是要求用户进行身份验证,以便为某些web页面提供服务。
创建.htaccess文件
首先在网站文件根目录或者特定的目录创建一个 .htaccess文件,以保护整个网站或者这个目录,并添加以下内容。
AuthType Basic AuthName "Secure Content" AuthUserFile /home/myuser/public_html/.htpasswd require valid-user
- **AuthType:**定义身份验证的类型。
- **Basic:**表示不存在加密,密码散列以明文形式发送。
- **AuthName:**提示输入用户名和密码时显示在web页面上的内容。
- **AuthUserFile:**存储用户凭证的文件。
- require valid-user:要求验证用户:指示只有成功的通过身份验证的请求才能加载页面。
在.htpasswd中创建用户
现在开始在.htaccess文件中定义的.htpasswd中创建用户。
我们可以添加用户和密码的纯文本或md5加密。
以纯文本格式添加密码:
# htpasswd -c /home/myuser/public_html/.htpasswd myuser
使用md5加密格式添加密码
# htpasswd -cm /home/myuser/public_html/.htpasswd myuser
**-c:**仅在第一次创建.htpasswd文件时使用。
如果我们第二次使用它,它将删除现有文件并重新创建一个新文件。
-m用于保存md5格式的密码。
配置Apache以使用.htaccess身份验证
默认情况下,Apache不允许使用.htaccess,所以我们还需要更新httpd.conf中的以下设置,以允许基于.htaccess的身份验证。
我们使用Allowoverride变量来决定apache是否读取.htaccess。
## 将 AllowOverride none ## 改成 AllowOverride AuthConfig
设置AuthConfig将只允许.htaccess中的身份验证,其余设置(如果有的话)将被忽略。
要允许在.taccess文件中定义的所有设置, 那么将 “AuthConfig” 改换成 “All”。
重启Apacheb并测试。
在apache配置文件(httpd.conf或apache2.conf)中进行任何更改之后,需要重新启动apache web服务。
用于CentOS/RHEL 6/5用户:
# service httpd restart
用于CentOS/RHEL 7用户:
# systemctl enable httpd.service
针对Ubuntu/Debian用户:
# service apache2 restart