You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不修改扩展名的.htm/.html页面中运行PHP代码

.htm/.html页面解析PHP7.4配置修复方案(SiteGuard托管主机环境)

现有配置的问题

  • 你写的两行AddHandler规则存在覆盖问题:第二行规则只绑定了.php和.html后缀,会直接覆盖第一行对.htm的绑定配置,等于.htm后缀根本没被纳入PHP解析范围。
  • SiteGuard托管主机默认对.htm、.html后缀配置了强制静态处理规则,优先级高于用户自定义的AddHandler规则,这类请求默认会直接返回静态源码,不会走到PHP解析层。
  • 部分SiteGuard节点的PHP7.4使用LSPHP解析器,默认的application/x-httpd-php74标识符不生效,需要使用主机商自定义的解析标识。

正确配置方法

删除原有两行AddHandler规则,将以下配置放到.htaccess文件的最顶部(不要放在网站程序自带的重写规则、缓存规则后面,避免被优先级更高的规则覆盖):

# 关闭htm/html后缀的强制静态缓存规则
SetEnvIf Request_URI "\.(htm|html)$" no-cache=1
# 绑定htm/html后缀到PHP7.4解析器
<FilesMatch "\.(htm|html)$">
    SetHandler application/x-httpd-php74
</FilesMatch>

如果配置后出现500错误、或者仍然输出PHP源码,把SetHandler后面的标识符替换为x-httpd-php74-lsphp即可,这是SiteGuard主机LSPHP解析器的通用标识。

需要额外检查的服务器配置项

  • 登录SiteGuard主机面板,检查是否开启了“静态HTML加速”“全页静态缓存”类功能,如果开启,需要把.htm、.html后缀从缓存/加速的后缀列表中移除,面板端配置优先级高于.htaccess规则,不修改面板规则无论怎么改.htaccess都不会生效。
  • 配置保存后,先清空SiteGuard主机自带的节点缓存,再清空本地浏览器缓存后测试,避免缓存导致规则不生效的误判。
  • 测试时不要用包含复杂逻辑的页面,先写一个仅包含<?php phpinfo(); ?>的简单test.htm文件上传验证,排除自身代码语法错误的干扰。

内容的提问来源于stack exchange,提问作者Tausif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:45:19