在我的CakePHP应用程序中,我有一个文件目录,我想允许使用用户名/密码直接访问。由于过于复杂的原因,将目录放在/ webroot文件夹中不是一个选项。我的文件夹位于:
/app/parent_folder/folder_full_of_files
所以我希望能够像这样直接访问文件:
http://mysite.com/app/parent_folder/folder_full_of_files/some_file.pdf
我想我需要修改root中的.htaccess文件,并在folder_full_of_files
我已经找到了this post,它提出了类似的问题......但我无法将其翻译成我的应用程序。
新的.htaccess文件中应包含哪些内容。这是我尝试过的,但只会导致500错误...
AuthType Basic
AuthName "restricted area"
AuthUserFile /bla/bla/mysite/app/parent_folder/folder_full_of_files/.htpasswd
require valid-user
加密.htaccess文件中密码的正确方法是什么?
答案 0 :(得分:1)
我让这个工作。我不得不做几件事......
我将其添加到root中的.htaccess
文件中:
RewriteCond %{REQUEST_URI} !^/app/parent_folder/folder_full_of_files
正如@Jon指出的那样,我上面的原始版本有一个错误([L]
)。
我的.htaccess
目录中也有/app
个文件。这可能是我的安装的一个怪癖,因为它不是100%的标准。我不记得它是否默认存在,所以我提到它以防万一。如果/app
中没有.htaccess
跳过此步骤。
我将其添加到/folder_full_of_files
:
AuthType Basic
AuthName "restricted area"
AuthUserFile /bla/bla/mysite/.htpasswd
require valid-user
文件中
AuthUserFile
确保.htpasswd
之后的路径是.htpasswd
文件的完全限定路径(请参阅下一步)。
创建实际的/webroot
文件。它不应该在文档根目录下,但我的是。我认为最重要的是它不在htpasswd -c /path/where/it/should/go/.htpasswd whatever_username
内。我在终端上使用了这个命令,它创建了文件:
.htaccess
它要求提供加密并写入文件的纯文本密码。
就是这样。一个恼人的“问题”是{{1}}到auth文件的路径必须是绝对的,这意味着在本地测试和生产之间移动时可能需要编辑它(除非两个环境完全相同) 。如果允许相对路径,那就不那么笨重了。
答案 1 :(得分:0)
AllowOverride AuthConfig
目录配置了AllowOverride All
或/app/parent_folder/folder_full_of_files/
。确保该目录还具有正确生成的htpasswd文件(名为.htpasswd
)。您需要使用htpasswd程序来生成它,或者使用任意数量的在线生成器。