Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP:如何使用.htaccess允许密码访问一个目录_.htaccess_Cakephp_Authorization_Cakephp 2.0 - Fatal编程技术网

CakePHP:如何使用.htaccess允许密码访问一个目录

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文件,

在我的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文件,并在
文件夹中添加另一个.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默认值中修改它,我发现了错误。这是一个阿帕奇的机器人