Apache - 拒绝访问除公共(public)目录之外的所有目录

标签 apache .htaccess

我正在开发一个工具,但我陷入了困境:我想为每个目录定义一组规则,基本上我只希望“公共(public)”文件夹可用,并拒绝访问其他文件夹。

我的目录结构是

uapi(root)/
    Application
    Config
    Public/
         Index.php
    Storage
    .htaccess

这是 .htaccess 文件

<Directory /Public>
    Order Deny, Allow
    Allow from all
    <IfModule mod_rewrite.c>
        Options +FollowSymLinks
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ Index.php/$1 [L]
    </IfModule>
</Directory>

<Directory /Config>
    Order Deny, Allow
    Deny from all
</Directory>

<Directory /Application>
    Order Deny, Allow
    Deny from all
</Directory>

<Directory /Storage>
    Order Deny, Allow
    Deny from all
</Directory>

最佳答案

如这个doc page说,你不能使用 <Directory> htaccess 内的指令,但仅限于服务器配置文件内。

无论如何,这对您来说不是问题:您可以存储一个 .htaccess每个目录中的文件,例如。创建这些文件:

公共(public)/.htaccess

Order Deny, Allow
Allow from all
<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ Index.php/$1 [L]
</IfModule>

/Config/.htaccess

Order Deny, Allow
Deny from all

/Application/.htaccess

Order Deny, Allow
Deny from all

/存储/.htaccess

Order Deny, Allow
Deny from all

关于Apache - 拒绝访问除公共(public)目录之外的所有目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18209489/

相关文章:

php - .htaccess 重定向到错误页面

django - apache的权限问题

apache - TLS1.3 session 的 SSLSessionID 等效项是什么

PHP 表单无法通过 GET 和 POST 方法传递少量值

wordpress - 更改发布日期时的 URL 重定向 - WordPress

php - htaccess 和变量 _POST

python - 如何修改 .htaccess 中的 sys.path 以允许 mod_python 看到 Django?

apache - 安装 phpmyadmin 后更改服务器选择

javascript - 不能包含 javascript(401 错误)

php - 在 multistore .htaccess 之后,Magento 中的类别 View (仅)缺少产品