在 Apache2 中将目录索引设置为 .html 文件

Posted

技术标签:

【中文标题】在 Apache2 中将目录索引设置为 .html 文件【英文标题】:Set directory index to .html file in Apache2 【发布时间】:2011-09-05 07:00:57 【问题描述】:

我有一个安装了 Apache2 的 Debian 网络服务器,需要在一个目录中将 DirectoryIndex 设置为 .html 文件(正是这个名称 - .html)。但是当我尝试从浏览器打开页面时,它会发送 403 错误。 我已经更改了 apache2.conf(设置为允许 .ht 文件),我将 .htacess 文件放在目录中并在其中设置:

DirectoryIndex .html index.php index.html
AllowOverride All
Order Deny,Allow
Allow from all

但它仍然无法正常工作并显示 403 错误。我做错了什么,忘记做什么?

【问题讨论】:

您确认文件夹的读取权限了吗? 是的,我什至尝试将其设置为 777 @Evgeniy Skulditsky:我想你也可以检查一下你的文件夹的所有者和组。 我首先检查了文件夹的所有者和组)我认为在其他地方还有关于 .ht 文件的附加规则 您的 apache 日志文件中是否收到任何错误消息?如果没有,您可能想尝试添加/更改 LogLevel 以更好地了解 Apache 为何给您 403。 【参考方案1】:

正确答案是:

<FilesMatch "^\.html">
        Order deny,allow
</FilesMatch>

DirectoryIndex .html

【讨论】:

谢谢!你能解释一下这种行为吗? 是的,当然。达米安是对的。某处有一条规则阻止此类文件。我们正在释放它们。这里的关键是 Order 指令。 order deny,allow 表示默认允许,除非有拒绝规则。 但是有一个小问题:host.com/dir/ - 工作,但 host.com/dir/.html - 没有 nginx 配置中有附加规则禁止访问 .ht 文件【参考方案2】:

听起来您的 apache 文件中某处有一条规则拒绝访问以 . 开头的文件。这通常是一件好事,因为许多敏感文件以点开头(即:.htaccess、.svn、.git、.htpasswd 等)。

您也许可以通过以下方式解决此问题:

<FilesMatch "^\.html">
 Order allow,deny
 Allow from all
</Files>

免责声明:这似乎是一种黑客行为。我不知道你想做什么,但可能有一种更简洁、更不容易出错的方法。

【讨论】:

谢谢你的好回答,但我已经在 apache2.conf 中做到了: Order allow,deny Allow from all 我也试过你的代码,但它仍然是 403 错误。

以上是关于在 Apache2 中将目录索引设置为 .html 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel @Apache2 Server Ubuntu 14.04 LTS 中将 Root 设置为公用文件夹

网站显示目录而不是索引

拒绝访问除索引文件之外的所有文件 - Apache2

Mac 10.9 自带apache2虚拟目录设置

如何在组合框中将第一个索引设置为空白

如何在mvc5中将文化设置为全局