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

如何在Heroku中修改.htaccess与httpd.conf?实现HTML解析为PHP

解决Heroku Apache2 Buildpack下HTML文件解析为PHP的问题

我之前折腾Heroku PHP Apache环境的时候也碰到过一模一样的问题,想让HTML文件支持PHP的文件包含功能,试了各种配置踩了不少坑,给你几个亲测有效的方案:

方案1:使用.htaccess(最简单)

Heroku的Apache buildpack默认会加载项目根目录的.htaccess文件,不用额外配置Procfile。直接在根目录创建.htaccess,添加以下规则:

# 让HTML/HTM文件走PHP解析
<FilesMatch "\.(html|htm)$">
    SetHandler application/x-httpd-php
</FilesMatch>

把文件commit后push到Heroku,重新部署后就能生效了。如果你的PHP是用FPM模式运行的,这个规则完全适用。

方案2:用-C参数追加httpd.conf配置(避免覆盖默认配置)

你之前用-c httpd.conf报错是因为这个参数会替换Heroku默认的httpd.conf,而默认配置里已经包含了监听PORT环境变量的规则,你自己的httpd.conf没有这个配置就会出现端口冲突。

正确的做法是用-C参数追加自定义配置:

  1. 在项目根目录创建一个custom-httpd.conf(名字随便取,比如html-php.conf),只写需要的规则:
<FilesMatch "\.(html|htm)$">
    SetHandler application/x-httpd-php
</FilesMatch>
  1. 修改Procfile,用-C指定这个配置文件:
web: heroku-php-apache2 -C custom-httpd.conf

这样Heroku会先加载默认的httpd.conf,再加载你的自定义规则,既不会破坏原有配置,又能实现HTML解析为PHP的需求。

方案3:利用Buildpack的自定义配置目录

Heroku PHP buildpack支持在项目根目录创建conf/apache2/文件夹,里面的.conf文件会被自动加载到Apache配置中,不用修改Procfile:

  1. 创建目录conf/apache2/,然后在里面新建html-as-php.conf文件,内容和上面一样:
<FilesMatch "\.(html|htm)$">
    SetHandler application/x-httpd-php
</FilesMatch>
  1. 直接commit push到Heroku,buildpack会自动识别并加载这个配置文件。

为什么之前的-C参数没生效?

如果用了-C但规则没生效,大概率是规则写法的问题:

  • 确保用FilesMatch匹配文件后缀,而不是简单的AddHandler(有时候Apache的handler优先级问题会导致AddHandler不生效)
  • 检查你的HTML文件里的PHP代码是不是标准格式(比如<?php ... ?>,不要用短标签除非你特意开启了)

内容的提问来源于stack exchange,提问作者karl-police

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:27:58