如果您需要从公共访问中屏蔽您的网站,请知道apache .htaccess文件提供了一种简单而有效的方法来完成此工作。本文仅通过简单的步骤就可以教给您。
第一步,我们需要确保我们的网站配置将读取.htaccess文件。为此,请检查您的httpd.conf文件或您的网站apache设置是否包含指令:
AllowOverride ALL
在Ubuntu /Debian系统上,此指令默认为“none”。
Options Indexes FollowSymLinks MultiViews AllowOverride ALL Order allow,deny allow from all
如果进行了一些更改,请重新启动apache Web服务器:
# /etc/init.d/apache2 restart
AuthType基本-单用户
此配置将仅允许一个用户名为“lilo”的用户访问受.htaccess保护的网站目录。首先,我们需要创建一个密码文件。该文件仅包含一行,以md5哈希形式定义用户及其密码。执行以下linux命令s创建密码文件:
注意:您不必使用-m选项来使用MD5密码。
# mkdir /usr/local/apache
# htpasswd -bcm /usr/local/apache/passwords lilo password-here
接下来,我们为具有用户名lilo的单个用户部署基本身份验证。这意味着只有lilo用户才能访问受.htaccess保护的网站。在您要保护的目录中更改或创建.htaccess文件,其内容如下:
AuthName ".htaccess protected website"
AuthType Basic
AuthUserFile /usr/local/apache/passwords
require user lilo
AuthType Basic-多个用户
这与上面的单个用户配置基本相同,只是我们需要更改一个.htaccess行:
从:
require user lilo
至:
require valid-user
因此,您将得到:
AuthName ".htaccess protected website"
AuthType Basic
AuthUserFile /usr/local/apache/passwords
require valid-user
现在,我们可以将更多用户添加到我们先前创建的密码文件中。但是,这次我们将省略-c选项,因此我们不会覆盖先前创建的/usr /local /apache /passwords文件。我们再添加两个用户:
# htpasswd -bcm /usr/local/apache/passwords john password-here
# htpasswd -bcm /usr/local/apache/passwords peter password-here
AuthType摘要
基本的.htaccess身份验证的一个缺点是,密码是通过Internet以明文形式发送的。这使得拦截和滥用变得容易。通过摘要身份验证,您的密码将以md5哈希形式加密发送。让我们创建.htaccess保护,以仅允许lilo用户访问我们的网站:首先,我们需要创建密码摘要文件,但是这次使用htdigest命令:
htdigest -c /usr/local/apache/digest-passwords ".htaccess protected website" lilo
注意:字符串“ .htaccess受保护的网站”是一个领域,当尝试访问受.htaccess保护的网站时,它将显示在对话框中。该字符串必须与下面的AuthName目录匹配。您可以将领域字符串更改为任意内容:更改或创建具有以下内容的.htaccess文件:
AuthType Digest
AuthName ".htaccess protected website"
AuthUserFile /usr/local/apache/digest-passwords
require user lilo
要让多个用户访问您的网站更改:
从:
require user lilo
至:
require valid-user
并通过以下方式将其他用户投放到您的/usr /local /apache /digest-passwords:
htdigest /usr/local/apache/digest-passwords ".htaccess protected website" john
htdigest /usr/local/apache/digest-passwords ".htaccess protected website" apache
故障排除
错误:
/var/www/.htaccess: Invalid command 'AuthDigestFile', perhaps misspelled or
defined by a module not included in the server configuration
AuthDigestFile仅由apache 2.2版使用use AuthUserFile指令