仅允许通过.htaccess直接访问特定文件夹名称

时间:2011-08-05 06:22:32

标签: .htaccess mod-rewrite

我需要允许通过.htaccess直接访问特定文件夹名称(和子内容),并拒绝所有其他文件夹。

首先,我当前的.htaccess是:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . index.php [L]

我的文件结构例如是:

    modules/
        core/
            _test/
            publics/
                file.txt
        other/
            _whatever/
                publics/
                    more.txt
            publics/
                sub/
                    file.txt
                other.txt
    .htaccess

除了publics文件夹中的文件和文件夹外,我无法访问任何内容。在这个例子中,我可以毫无问题地访问:

  • modules / core / publics / [dir]
  • 模块/核心/公众/ file.txt的
  • modules / other / _whatever / publics / [dir]
  • 模块/其它/ _whatever /公众/ more.txt
  • modules / other / publics / [dir]
  • modules / other / publics / sub / [dir]
  • 模块/其它/公众/分/ file.txt的
  • 模块/其它/公众/ other.txt

我无法访问任何文件或文件夹。

我想我们需要正则表达式,但我不知道如何在mod_rewrite上使用它来按我想要的方式工作。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

对您当前的htaccess稍作修改。不在publics文件夹下的任何访问都将被重定向到index.php:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !publics/
RewriteRule . index.php [L]