如何在Apache中使用.htaccess文件密码保护Web目录

在本教程中,我将向您展示如何使用htaccess配置文件对Apache Web服务器中的不同网站目录进行密码保护。

当您管理在线项目时,您经常需要限制对该项目的访问,以保护其免受外部世界的影响。 可能有不同的原因 - 例如,您希望防止搜索引擎抓取工具在仍处于开发阶段时访问您的网站。

密码保护Apache Web目录

密码保护Apache Web目录

在本教程中,我将向你展示如何密码,Apache Web服务器保护,不同的网站目录。 有很多方法可以实现这一点,但我们将审查其中最常用的两个。

第一种方法是配置直接在Apache的配置文件的密码保护,而第二个使用.htaccess文件。

要求

为了为您的Web目录设置密码保护,您需要:

  • 一个工作的Apache Web服务器
  • 设置AllowOverride AuthConfig指令必须在Apache配置文件中启用。

设置Apache密码保护目录

一,在本教程中,我们将保护主要网站根目录/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
allow,deny
Allow from all 
</Directory>

在Apache 2.4版本

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All 
Require all granted 
</Directory>
Apache 2.4:启用AllowOverride All

Apache 2.4:启用AllowOverride All

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的网站访问的目录,所以它是很好的保护。 为此,我们将创建新目录:

# mkdir /home/howtoing

6.之后,我们将产生我们的用户名和密码,将被存储在该目录中:

# htpasswd -c /home/howtoing/webpass howtoing

一旦执行此命令,你将不得不进入我们的新用户的密码"howtoing"两次:

创建Apache用户密码

创建Apache用户密码

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

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

7.在这一点上我们的新用户名和密码都准备好了。 现在我们需要告诉Apache在访问目标目录时请求密码。 为此,创建文件调用的.htaccess/ var / www / html等

# vi /var/www/html/.htaccess

在其中添加以下代码:

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/howtoing/webpass
Require user howtoing
创建Apache受限访问

创建Apache受限访问

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

http://ip-address

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

Apache密码保护目录认证

Apache密码保护目录认证

输入您设置的用于继续浏览您的网页的用户名和密码。

补充笔记

如果您使用共享托管,您很可能无法访问Apache配置文件。 然而,大多数托管公司已启用默认设置“AllowOverride全部”选项。 这意味着您只需要生成用户名和密码,然后选择您要保护的目录。 这显着简化了您的任务。

结论

我希望你发现这个教程有用,并帮助你实现你的目标。 如果您有任何问题或意见,请不要犹豫,在下面的部分。