【问题标题】:Apache2 mod autoindex does not read .phpApache2 mod autoindex 不读取 .php
【发布时间】:2016-12-12 02:06:04
【问题描述】:

Apache2 的 mod autoindex 允许包含一个头文件和一个自述文件,我在目录的.htaccess 中以这种方式配置:

ReadMeName footer.html
HeaderName header.php

由于某些模糊的原因,如果头文件是.php,则不会读取它。我将它重命名为 header.html 并在 htaccess 中:

HeaderName header.html

它运行良好(即使在 .html 中它包含 <?php ?> 标记)

为什么 apache 做帽子,有没有办法解决它?

【问题讨论】:

  • 行,我先自己转一下。
  • 其实它没有用...我删除了我的评论,所以你不会看到它,但显然为时已晚^^
  • 我什至 chmod +x'd 我的 php 并将 XBitHack 设置为打开,但它没有任何改变......
  • LMAO 我搞定了。值得一试! :D

标签: php apache2 mod-autoindex


【解决方案1】:

根据mod_autoindex / HeaderName directive 上的手册:

文件名必须解析为主要内容类型为 text/*(例如,text/html、text/plain 等)。这意味着文件名 如果脚本的实际文件类型(而不是 到它的输出)被标记为 text/html...

...虽然.php 文件的内容类型定义为application/x-httpd-php,即使脚本的输出默认为text/html。然而,还有希望。实际上,您可以通过将以下组合添加到您的 .htaccess 在您的 HeaderName 指令之前来解析 PHP:

AddHandler application/x-httpd-php .php
AddType text/html .php

两者都无法单独完成这项工作。我假设这里 Apache(在 2.4 上测试)首先设置一个处理程序并解析 .php 文件,然后同意理解输出类型确实主要是 text/html。我觉得这很古怪,但它确实有效!

【讨论】:

  • 我使用的是 Apache 2;4,它可以改变什么吗?
  • 我也在 2.4,这对我有用。 FWIW,除了上述内容之外,在我的httpd.conf 中还有这个(尽管它不应该对快速测试产生影响):IndexOptions FancyIndexing HTMLTable VersionSort FoldersFirst NameWidth=* XHTML SuppressDescription
  • 在我的 CentOS 机器上的 Apache 2.2 上也可以正常工作。这是一个采样器,将我的.htaccess 克隆为htaccess.txt 那里:codesatori.com/tmp/autoindex ...(如果您想知道,请使用我的服务器默认设置的自定义样式表。)哦,我正在运行 PHP(7.0. 2) 作为本地和远程服务器上的mod_php,不知道作为 CGI 运行是否会改变其工作方式。我的印象是 AddHandler vis-a-vis AddType 是 Apache 中比较晦涩的角落之一。
  • 我将 footer.html 设置为 footer.php 并且它起作用了......问题似乎来自我的 header.php 文件
  • 实际上它确实来自我的 header.php 中的语法错误 --' 我现在已经修复它并且它工作正常,不过感谢您的建议!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多