如何使用 .htaccess 文件对 Apache 中的 Web 目录进行密码保护
当您管理在线项目时,您经常需要限制对该项目的访问,以保护其免受外界影响。这样做的原因可能不同 - 例如,您希望阻止搜索引擎爬虫在网站仍处于开发阶段时访问您的网站。
在本教程中,我将向您展示如何在Apache Web 服务器中对不同的网站目录进行密码保护。有很多方法可以实现这一点,但我们将回顾其中最常用的两种方法。
第一种方法是直接在Apache的配置文件中配置密码保护,而第二种方法是使用 .htaccess文件。
要求
为了设置您的网站目录的密码保护,您需要:
- 一个正常运行的 Apache Web 服务器
- 必须在 Apache 配置文件中启用AllowOverride AuthConfig指令。
设置 Apache 密码保护目录
1.在本教程中,我们将保护主 Web 根目录/var/www/html
。要保护该目录,请打开 Apache 的配置:
---------------- On RedHat/CentOS based systems ---------------- # vi /etc/httpd/conf/httpd.conf ---------------- On Debian/Ubuntu based systems ---------------- # nano /etc/apache2/sites-available/000-default.conf
2.找到/var/www/html 的Apache 文档目录根目录并根据建议添加以下内容:
在 Apache 2.2 版本上
<Directory /var/www/html> Options Indexes Includes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory>
在 Apache 2.4 版本上
<Directory /var/www/html> Options Indexes Includes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory>
3.保存文件并使用以下命令重新启动 Apache:
--------------- On Systemd ------------------- # systemctl restart httpd [On RedHat based systems] # systemctl restart apache2 [On Debian based systems] --------------- On SysV init ----------------- # service httpd restart [On RedHat based systems] # service apache2 restart [On Debian based systems]
4.现在我们将使用htpasswd命令为受保护的目录生成用户名和密码。此命令用于管理基本身份验证的用户文件。
该命令的一般语法是:
# htpasswd -c filename username
该-c
选项指定将保存加密密码的文件,用户名指定用于身份验证的用户。
5.我们的密码文件需要位于 Apache 的 Web 可访问目录之外,以便得到良好的保护。为此,我们将创建新目录:
# mkdir /home/example
6.之后,我们将生成存储在该目录中的用户名和密码:
# htpasswd -c /home/example/webpass example
执行此命令后,您将必须为我们的新用户输入"example"
两次密码:
之后,我们需要确保 Apache 能够读取“ webpass ”文件。为此,您需要使用以下命令更改该文件的所有权:
---------------- On RedHat/CentOS based systems ---------------- # chown apache: /home/example/webpass # chmod 640 /home/example/webpass
---------------- On Debian/Ubuntu based systems ---------------- # chown www-data /home/example/webpass # chmod 640 /home/example/webpass
7.此时我们的新用户和密码已准备好。现在我们需要告诉 Apache 在访问目标目录时要求输入密码。为此,在/var/www/html中创建名为.htaccess的文件:
# vi /var/www/html/.htaccess
在其中添加以下代码:
AuthType Basic AuthName "Restricted Access" AuthUserFile /home/example/webpass Require user example
8.现在保存文件并测试您的设置。打开浏览器并在 Web 浏览器中输入您的 IP 地址或域名,例如:
http://ip-address
系统将提示您输入用户名和密码:
输入您设置的用户名和密码以继续进入您的页面。
其他说明
如果您使用的是共享主机,您很可能无法访问 Apache 配置文件。但是,大多数主机公司默认启用了“ AllowOverride All”选项。这意味着您只需生成用户名和密码,然后选择要保护的目录。这大大简化了您的任务。
结论
我希望本教程对您有用,并能帮助您实现目标。如果您有任何问题或意见,请随时在下面的部分中发表。