网站搜索

如何使用 .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 选项指定保存加密密码的文件,username 指定用于身份验证的用户。

5. 我们的密码文件需要位于 Apache 的 Web 可访问目录之外,以便得到良好的保护。为此,我们将创建新目录:

mkdir /home/tecmint

6. 之后,我们将生成用户名和密码,并将其存储在该目录中:

htpasswd -c /home/tecmint/webpass tecmint

执行此命令后,您必须输入新用户“howtoing”的密码两次:

之后,我们需要确保 Apache 能够读取“webpass”文件。为此,您需要使用以下命令更改该文件的所有权:

---------------- On RedHat/CentOS based systems ----------------
chown apache: /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
chown www-data /home/tecmint/webpass
chmod 640 /home/tecmint/webpass

7. 此时我们的新用户和密码已准备就绪。现在我们需要告诉 Apache 在访问目标目录时请求密码。为此,在 /var/www/html 中创建名为 .htaccess 的文件:

vi /var/www/html/.htaccess

在其中添加以下代码:

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint

8. 现在保存文件并测试您的设置。打开浏览器并在网络浏览器中输入您的IP地址或域名,例如:

http://ip-address

系统应该提示您输入用户名和密码:

输入您设置的用户名和密码以继续访问您的页面。

补充笔记

如果您使用共享主机,您很可能无法访问 Apache 配置文件。不过,大多数托管公司默认启用“AllowOverride All”选项。这意味着您只需要生成用户名和密码,然后选择您想要保护的目录。这大大减轻了您的任务。

结论

我希望您发现本教程有用并帮助您实现目标。如果您有任何问题或意见,请随时在下面的部分中发布。