如果我们将Apache Web服务器设置为配置Apache以将所有 HTML作为PHP处理,是否存在任何安全/性能问题?我特别提到:
AddType application/x-httpd-php .php .php3 .php4 .html
我遇到的情况是我需要在一些HTML文件中添加一些PHP逻辑;理想情况下,我不必更改文件名,例如page.html
至page.php
(以保持page.html
的网页排名等。)
这与以下问题有关:httpd AddType directive
编辑: 从下面的现有答案/评论看,社区似乎建议使用重定向或仅定位特定的HTML文件。限制是我正在重新设计一个现有的站点(400多个HTML页面;每个页面都使用某种Dreamweaver模板,从不同的文件中提取页眉和页脚)。我希望完全回避Dreamweaver进入非专有的东西。所以,我有两个选择:
答案 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更安全。