如何在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