1

在我的 CakePHP 应用程序中,我有一个文件目录,我希望允许使用用户名/密码直接访问该目录。由于过于复杂的原因,不能将目录放在 /webroot 文件夹中。我的文件夹位于此处:

/app/parent_folder/folder_full_of_files

所以我希望能够像这样直接访问文件:

http://mysite.com/app/parent_folder/folder_full_of_files/some_file.pdf

我想我需要修改根目录下的 .htaccess 文件,并在根目录下添加另一个 .htaccess 文件和 .htpasswd 文件folder_full_of_files

我已经找到了这篇提出类似问题的帖子……但我无法将其翻译到我的应用程序中。

  1. 如何修改根 .htaccess 文件?
  2. 新的 .htaccess 文件中应该有什么。这是我尝试过的,但只会导致 500 错误...

     AuthType Basic
     AuthName "restricted area"
     AuthUserFile /bla/bla/mysite/app/parent_folder/folder_full_of_files/.htpasswd
     require valid-user
    
  3. 在 .htaccess 文件中加密密码的正确方法是什么?

4

2 回答 2

1

我得到了这个工作。我必须做几件事...

  1. 我将此添加到.htaccess根目录中的文件中:

    RewriteCond %{REQUEST_URI} !^/app/parent_folder/folder_full_of_files
    

    正如@Jon 指出的那样,我上面的原始版本有一个错误([L])。

  2. 我的目录中也有一个.htaccess文件/app。这可能是我安装的一个怪癖,因为它不是 100% 标准的。我不记得它是否默认存在,所以我提到它以防万一。如果您没有,请/app跳过此步骤。

  3. 我将此添加到以下文件中的.htaccess文件中/folder_full_of_files

    AuthType Basic
    AuthName "restricted area"
    AuthUserFile /bla/bla/mysite/.htpasswd
    require valid-user
    

    确保后面的路径AuthUserFile.htpasswd文件的完全限定路径(请参阅下一步)。

  4. 创建实际.htpasswd文件。它不应该在文档根目录下,但我的是。我认为最重要的是它不在里面/webroot。我从终端使用了这个命令,它创建了文件:

    htpasswd -c /path/where/it/should/go/.htpasswd whatever_username
    

    它要求一个纯文本密码,该密码被加密并写入文件。

而已。一个令人讨厌的“问题”是.htaccessauth 文件中的路径必须是绝对路径,这意味着在本地测试和生产之间移动时可能必须对其进行编辑(除非两个环境完全相同)。如果允许相对路径,它将不那么笨重。

于 2013-10-11T13:43:29.067 回答
0
  1. 您根本不需要修改文档根目录中的 htaccess 文件
  2. 确保您已为您的目录配置AllowOverride AuthConfig或配置。确保该目录还具有正确生成的 htpasswd 文件(名为)。您需要使用 htpasswd 程序来生成它,或者使用任意数量的在线生成器。AllowOverride All/app/parent_folder/folder_full_of_files/.htpasswd
于 2013-10-11T01:52:22.190 回答