代码之家  ›  专栏  ›  技术社区  ›  Ólafur Waage

如何使用.htaccess拒绝除一个目录名之外的所有目录名?

  •  3
  • Ólafur Waage  · 技术社区  · 15 年前

    我有一个.htaccess文件,在该文件中,我阻止用户从浏览器物理访问文件(在该文件中,只应通过系统加载这些文件)

    Options -Indexes
    Order deny,allow
    deny from all
    

    但我有一个问题,有时我通过Ajax加载文件,在那里我得到403禁止。我对Apache的mod_访问几乎没有经验。我一直在读关于 directory directive 因为我所有基于Ajax的文件都在一个名为Ajax的目录中。

    但问题是我需要拒绝所有目录的访问,除了Ajax和我的regex技能欠缺的目录。

    目录结构示例如下。

    plugins/inventory/ajax
    plugins/inventory/controller
    plugins/inventory/view
    
    plugins/packages/ajax
    plugins/packages/controller
    plugins/packages/view
    

    .htaccess文件位于插件目录中。

    1 回复  |  直到 15 年前
        1
  •  3
  •   chaos    15 年前

    您首先需要这样做,这是项目体系结构的一种失败。首先,Web不应该访问的脚本文件不应该位于documentroot中。

    也就是说,这可能会奏效:

    RewriteEngine on
    <DirectoryMatch "/(?!.*/ajax$)">
       Order deny,allow
       Deny from all
    </DirectoryMatch>