将HTML解析为PHP


Parse HTML as PHP

如果我们设置Apache web服务器配置Apache来处理所有 HTML作为PHP,是否有任何安全/性能问题?我指的是:

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

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

这与以下问题有关:httpd AddType指令

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

  1. 使用服务器端包含(SSI)来拉入页眉和页脚。这将导致我所有的HTML文件被SSI装饰。
  2. 添加一些PHP代码片段来包含页眉和页脚。对于这个选择,我使用确保文件名保持不变。

服务器确定需要通过PHP解释器传递的文件越多,所涉及的开销就越多,但我认为这是不言而喻的。如果你的网站没有任何纯HTML页面,那么你已经付出了所有可能付出的性能代价——在这种情况下,将HTML添加到列表中与简单地将所有文件重命名为具有。php扩展名没有什么不同。

如果没有具有纯HTML页面,那么真正的性能损失将会出现——服务器将不必要地将这些页面传递给PHP进行解释,而不是必要的。但即便如此,这也并不引人注目—这些HTML页面不需要PHP解释器,因此除了确定它不需要做任何事情之外,它不会做任何事情。这是有代价的,但并不重要。

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

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

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

我不同意Tuga的观点。我认为你不应该对所有的文件都做这样的修改。任何时候处理安全问题,都应该设法控制环境。只对一个文件执行此操作可能是最安全的。你可以这样写

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

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