【问题标题】:htaccess protect all subfolders & fileshtaccess 保护所有子文件夹和文件
【发布时间】:2015-08-20 18:49:39
【问题描述】:

我有这种情况:

/storage
  index.php
  other scripts.php
  /files  
    -files and folders-

我想拒绝对/files 的所有文件和子文件夹的所有HTTP 请求,但同时允许访问/storage 并运行那些PHP 脚本。我尝试了一些规则,但它们要么只保护文件列表,要么不允许访问所有 /storage 文件夹。

.htaccess 必须在 /files 之外(因为这个文件夹是由 PHP 访问的,readfile 和 .htaccess 可以访问)。

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    在您的根 .htaccess 文件中,即在 /storage 目录下放置这一行:

    RewriteRule ^files/ - [R=404,L,NC]
    

    这会将404 抛给files/ 子目录下的所有HTTP 请求,而您的.php 文件将能够包含files/ 子目录下的文件。

    【讨论】:

    • 它不起作用我仍然可以访问文件,例如 /files/image.jpg 是可见的
    • 您的 .htaccess 是否被读取?在发布之前,我已经在我的 Linux、Mac 和 XAMPP 安装上测试了上述规则,并且它在任何地方都有效。
    • @anubhava 我有一个 htaccess 问题你能回答我的问题吗,看起来你是 regex 上最好的。 stackoverflow.com/questions/52017924/…
    【解决方案2】:

    我认为是这样的,在父目录中(您可能想要使用完整路径)

    <Directory ./Files>
      ORDER DENY, ALLOW
      DENY FROM ALL
    </DIRECTORY>
    

    一般来说,为了安全起见,我建议您将 /files 目录放在文档根目录之外的某个位置。这样,如果 .htaccess 意外关闭或损坏,您最终不会暴露文件。

    编辑:

    抱歉,&lt;Directory&gt; 指令仅在服务器配置中有效(您需要将其放在 httpd.conf 文件或等效文件中),而不是在 .htaccess 中。如果您确定要放入目录中的文件类型,您可以将 &lt;Files&gt; 指令与各种文件类型一起使用:http://httpd.apache.org/docs/current/mod/core.html#files 但是这需要放入 Files 目录中. (然后可能只是将其从 PHP 脚本中排除,尽管许多人已经忽略了隐藏文件)。

    【讨论】:

      猜你喜欢
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      相关资源
      最近更新 更多