在 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 中做到了:以上是关于在 Apache2 中将目录索引设置为 .html 文件的主要内容,如果未能解决你的问题,请参考以下文章