【问题标题】:.htaccess deny access to specific files? more than one.htaccess 拒绝访问特定文件?超过一个
【发布时间】:2011-01-12 01:56:21
【问题描述】:

我可以使用 .htaccess 禁用对文件的访问,但我不知道如何禁止查看多个文件(直接,而不是从包含)

它们是 .php,所以我不能禁用文件类型(就像网上唯一的教程说的那样......)

<FILES ... ? 

</FILES>

或者什么.. 例如“home.php, file.php, test.php”我如何禁止访问带有该标签的所有三个文件?或类似的,请帮助!

【问题讨论】:

    标签: php security apache .htaccess file


    【解决方案1】:

    如果要根据正则表达式排除文件,可以使用 FilesMatch 代替 Files,例如:

    <FilesMatch ^((home|test|file)\.php$|mysecretfolder|asecretpicture\.jpe?g)$>
    ...
    </FilesMatch>
    

    【讨论】:

    • 完美,我喜欢每个文件名的管道,正是我想要的。谢谢。
    • 警告:如果您想排除 /test.php,而不是 /public/test.php 或 /test.php.bak,请使用字符串的开头和结尾
    • 这是我整个星期看到的最有用的东西。诚然,星期一刚过下午 2 点,但仍然如此。
    • 警告:在FilesMatch 指令中包含mysecretfolder不会拒绝访问该目录中的所有文件。
    【解决方案2】:

    看来你必须一一排除这些文件:

    <files home.php>
    Deny/Allow/Whatever
    </files>
    <files file.php>
    ...
    

    您可以在&lt;files&gt;something* 中使用*.gif,但作为home.php、file.php 和test.php 不能真正用“*”分组,这可能是唯一的方法去吧。

    【讨论】:

      【解决方案3】:

      从 Apache 2.4 开始

      <FilesMatch "\.htaccess|config\.php">
      
          Require all denied
      
      </FilesMatch>
      

      而不是

      <FilesMatch "\.htaccess|config\.php">
      
          Order allow,deny 
          Deny from all 
      
      </FilesMatch>
      

      【讨论】:

        猜你喜欢
        • 2013-10-07
        • 2016-03-23
        • 2011-05-11
        • 2012-09-23
        • 2019-04-07
        • 1970-01-01
        • 2018-03-27
        • 2014-12-31
        • 2012-03-06
        相关资源
        最近更新 更多