将HTML解析为PHP

时间:2011-08-24 20:27:32

标签: php html apache configuration apache2

如果我们将Apache Web服务器设置为配置Apache以将所有 HTML作为PHP处理,是否存在任何安全/性能问题?我特别提到:

AddType application/x-httpd-php .php .php3 .php4 .html

我遇到的情况是我需要在一些HTML文件中添加一些PHP逻辑;理想情况下,我不必更改文件名,例如page.htmlpage.php(以保持page.html的网页排名等。)

这与以下问题有关:httpd AddType directive

编辑: 从下面的现有答案/评论看,社区似乎建议使用重定向或仅定位特定的HTML文件。限制是我正在重新设计一个现有的站点(400多个HTML页面;每个页面都使用某种Dreamweaver模板,从不同的文件中提取页眉和页脚)。我希望完全回避Dreamweaver进入非专有的东西。所以,我有两个选择:

  1. 使用Server Side Includes (SSI) to pull in the header and footer。这将导致我的所有HTML文件都使用SSI进行修饰。
  2. 撒上一些PHP代码段以包含页眉和页脚。对于这个选择,我以确保文件名保持不变。

2 个答案:

答案 0 :(得分:6)

服务器确定需要通过PHP解释器传递的文件越多,涉及的开销就越多,但我认为这是不言而喻的。如果您的网站没有包含普通HTML的任何网页,那么您已经支付了所有可能支付的性能损失 - 在列表中添加HTML与相比没有什么不同而不是简单地重命名所有文件扩展名为.php。

如果你拥有纯HTML页面,那么真正的性能损失将会到来 - 当没有必要时,服务器将不必要地将这些页面传递给PHP进行解释。但即便如此,它并不引人注目 - 这些HTML页面不需要PHP解释器,因此除了确定它不需要做任何事情之外它不会做任何事情。这有成本,但并不重要。

现在,如果我们在这里谈论大量,那么每一点性能都很重要,这不是一个切实可行的解决方案。然而,对于中低容量的站点,性能损失将是无法实现的。

如果这是一次性更改并且受影响的文件数量有限,则使用FilesMatch指令可能会更为保守。

<FilesMatch "^(file_one|file_two|file_three)\.html$">
  AddType application/x-httpd-php .html
</FilesMatch>

答案 1 :(得分:4)

我不同意Tuga。我认为您不应该对所有文件进行此更改。无论何时处理安全性,都应该尝试控制环境。仅对一个文件执行它可能是最安全的。你可以做点什么

<FilesMatch "^file_name\.html$">
AddType application/x-httpd-php .html
</FilesMatch>

这只会匹配file_name.html并将其处理为.php,这样做比将所有 .html文件视为php更安全。