CakePHP:如何使用.htaccess允许密码访问一个目录
在我的CakePHP应用程序中,我有一个文件目录,我想使用用户名/密码直接访问该目录。由于过于复杂的原因,将目录放在/webroot文件夹中不是一个选项。我的文件夹位于此处:CakePHP:如何使用.htaccess允许密码访问一个目录,.htaccess,cakephp,authorization,cakephp-2.0,.htaccess,Cakephp,Authorization,Cakephp 2.0,在我的CakePHP应用程序中,我有一个文件目录,我想使用用户名/密码直接访问该目录。由于过于复杂的原因,将目录放在/webroot文件夹中不是一个选项。我的文件夹位于此处: /app/parent\u folder/folder\u full\u of\u files 因此,我希望能够像这样直接访问文件: http://mysite.com/app/parent_folder/folder_full_of_files/some_file.pdf 我想我需要修改根目录中的.htaccess文件,
/app/parent\u folder/folder\u full\u of\u files
因此,我希望能够像这样直接访问文件:
http://mysite.com/app/parent_folder/folder_full_of_files/some_file.pdf
我想我需要修改根目录中的.htaccess文件,并在文件夹中添加另一个.htaccess文件和.htpasswd文件
我已经找到了一个类似的问题。。。但是我不能把它翻译成我的应用程序
我需要如何修改root.htaccess文件
新的.htaccess文件中应该包含哪些内容。这是我尝试过的,但只会导致500个错误
AuthType Basic
AuthName "restricted area"
AuthUserFile /bla/bla/mysite/app/parent_folder/folder_full_of_files/.htpasswd
require valid-user
加密.htaccess文件中密码的正确方法是什么
您根本不需要修改文档根目录中的htaccess文件
确保为您的/app/parent\u文件夹/文件夹\u full\u文件/
目录配置了AllowOverride AuthConfig
或AllowOverride All
。确保该目录还具有正确生成的htpasswd文件(名为.htpasswd
)。您需要使用htpasswd程序来生成它,或者使用任意数量的在线生成器
您根本不需要修改文档根目录中的htaccess文件
确保为您的/app/parent\u文件夹/文件夹\u full\u文件/
目录配置了AllowOverride AuthConfig
或AllowOverride All
。确保该目录还具有正确生成的htpasswd文件(名为.htpasswd
)。您需要使用htpasswd程序来生成它,或者使用任意数量的在线生成器
我让它工作。我不得不做几件事
我将其添加到root中的.htaccess
文件中:
RewriteCond %{REQUEST_URI} !^/app/parent_folder/folder_full_of_files
正如@Jon指出的,我上面的原始版本有一个错误([L]
)
我的/app
目录中还有一个.htaccess
文件。这可能是我的安装的一个怪癖,因为它不是100%的标准。我不记得默认情况下它是否在那里,所以我提到它只是以防万一。如果/app
中没有,请跳过此步骤
我将其添加到.htaccess
文件的/文件夹\u full\u文件中
:
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
它要求一个明文密码,该密码被加密并写入文件中
就这样。一个恼人的“问题”是,auth文件的.htaccess
路径必须是绝对路径,这意味着在本地测试和生产之间移动时,可能必须对其进行编辑(除非两个环境完全相同)。如果允许相对路径,它就不会那么笨重了。我让它工作起来了。我不得不做几件事
我将其添加到root中的.htaccess
文件中:
RewriteCond %{REQUEST_URI} !^/app/parent_folder/folder_full_of_files
正如@Jon指出的,我上面的原始版本有一个错误([L]
)
我的/app
目录中还有一个.htaccess
文件。这可能是我的安装的一个怪癖,因为它不是100%的标准。我不记得默认情况下它是否在那里,所以我提到它只是以防万一。如果/app
中没有,请跳过此步骤
我将其添加到.htaccess
文件的/文件夹\u full\u文件中
:
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
它要求一个明文密码,该密码被加密并写入文件中
就这样。一个恼人的“问题”是,auth文件的.htaccess
路径必须是绝对路径,这意味着在本地测试和生产之间移动时,可能必须对其进行编辑(除非两个环境完全相同)。如果允许相对路径,它就不会那么笨重了。对于#2,htaccess文件的确切内容应该是什么?还有,什么是“是否正确生成.htpasswd文件?我试过几台在线加密机,但它们都返回了不同的东西。我在终端上尝试了htpasswd-c/bla/bla/.htpasswd username
命令,但什么也没发生。没有错误。没有文件。什么都没有。@Emerson您所拥有的是您想要保护的文件夹中htaccess文件中所需的全部内容。运行该命令时,htpasswd
命令应提示输入密码。如果所有其他操作都失败,请查看错误日志,以了解到底是什么导致了500服务器错误。我正在使用Chrome的“REST控制台”扩展发送请求,并将基本身份验证设置为匹配的用户名和纯文本密码。那(如果设置正确的话)能起作用吗?等等。根目录中的.htaccess文件是否将所有URL重写为/app/webroot?那么,它会拦截对文件夹\u full\u of \u files/…的直接请求吗。。。首先,如果我没有从CakePHP默认值中修改它,我发现了错误。这是一个阿帕奇的机器人