指定在哪些目录中查找 .htaccess 文件

指定在哪些目录中查找 .htaccess 文件

我读到过,为所有目录启用 .htaccess 会导致性能开销,因为所有子文件夹也会扫描 .htaccess 文件。

我只想读取 .htaccess 文件:/var/www/xgclan.com/public_html 和 /var/www/xgclan.com/public_html/forum

我在 apache2.conf 中配置了以下内容(针对 /var/www/xgclan.com/public_html)

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/xgclan.com/public_html>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

但这似乎不起作用..子目录也会读取 .htaccess 文件

我应该提到 xgclan.com 是一个虚拟主机。我做错了什么?

我能够使用以下命令阻止检查子目录中的 .htaccess 文件:

<Directory /var/www/xgclan.com/public_html/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

但这也阻止了 /var/www/xgclan.com/public_html/forum 中的 .htaccess 文件,因此我尝试添加以下规则来允许该特定目录:

<Directory /var/www/xgclan.com/public_html/forum>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

但这似乎不起作用。

答案1

您是否尝试过在 VirtualHost 声明中添加目录部分?

在浏览器上访问主机时,您的 error_log 输出是什么?您是否收到上述任何错误在 Apache 文档中

好的,如果您希望 apache 仅扫描整个虚拟主机目录中的两个特定文件夹以查找 .htaccess 文件,您应该指定要禁止和允许的文件,例如:

<Directory /var/www/xgclan.com/public_html>
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<Directory /var/www/xgclan.com/public_html/*/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/xgclan.com/public_html/forum>
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

相关内容