0

对于这个简单的目录访问规则,我需要一些帮助——抱歉,我刚开始使用 Apache 2.4,之前没有这样做过。

我已将 Apache 2.4 配置到一个阶段,在该阶段我可以看到受保护资源的登录,一旦我输入用户/密码,我就可以访问受保护的资源。

现在我想做以下事情,但我不确定如何完成。

  1. Web 根目录设置为 /var/www
  2. /var/www/login - 任何人都可以访问,不需要身份验证,因为此文件夹包含 login.html 和 logout.html。(我得到了这个工作)
  3. /var/www - 我的应用程序根目录中的所有其他内容只能在身份验证后访问。这是我不知道如何设置的部分。

我的虚拟主机配置看起来像这样。

    NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/var/www"
    ServerName auth-test.ml.com
    ErrorLog "logs/test-error_log"
    CustomLog "logs/test-access_log" common

<Directory "/var/www">
    AuthFormProvider file
    AuthType form
    AuthName "Reserved Area"
    Session On
    SessionCookieName session path=/
    require valid-user

        # This is the login page
    ErrorDocument 401 /login/index.html

    # This is the file containing users login data
    AuthUserFile /usr/local/apache2/auth/.htpasswd

</Directory>
 <Directory /var/www/login>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
   </Directory>

</VirtualHost>

在我访问http://example.com之类的应用程序时, 我希望看到 login.html 页面返回,但我收到以下错误消息:

Unauthorized

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.

Additionally, a 401 Unauthorized error was encountered while trying to use an ErrorDocument to handle the request.

我怎样才能使这项工作?

4

1 回答 1

0

弄清楚了。就像使用目录首先拒绝对根文档的所有访问并只允许有效用户一样简单。

使用另一个目录打开对 auth 文件夹的所有访问权限。

于 2015-02-11T21:54:14.617 回答