AWS上IIS部署PHP应用URL无末尾斜杠时HTTPS跳转HTTP故障问询
排查配置项清单
1. IIS内置目录末尾斜杠重定向规则
IIS默认开启目录斜线自动补全功能,当访问的路径对应站点内的实际目录且不带末尾斜杠时,会自动返回301重定向到带斜杠的地址,重定向使用的协议默认读取站点绑定的默认协议,你当前已配置index.php为默认文档的前提下该功能会正常触发。
- 排查操作:打开IIS管理器,定位到对应PHP应用的站点/目录,打开「配置编辑器」,定位到
system.webServer/serverRuntime节点,检查alwaysUseHttps属性是否为True,如果为False,IIS生成自动重定向地址时会优先使用HTTP协议。 - 修复方案:将
alwaysUseHttps设为True即可让自动重定向地址默认使用HTTPS;如果不需要自动补斜杠功能,也可以将system.webServer/defaultDocument节点下的enabled设为False,但需要同步调整应用内的路径适配逻辑。
2. PHP应用自身的基础路径配置
由于.NET应用无此问题,说明IIS全局配置无异常,优先排查PHP应用的自定义配置:
- 排查操作:检查PHP应用的全局配置文件(如
config.php、.env配置文件)中的base_url、site_url类参数是否设置为HTTP开头的地址,绝大多数PHP框架(如Laravel、CodeIgniter)生成重定向地址时会优先读取该参数。 - 修复方案:将对应参数修改为HTTPS开头的完整站点域名。
3. PHP FastCGI处理器的协议透传配置
IIS托管PHP应用时,FastCGI默认不会主动将HTTPS协议状态透传给PHP,会导致PHP应用误判当前请求为HTTP,生成的重定向地址也会默认使用HTTP。
- 排查操作:打开对应站点的「FastCGI设置」,选中PHP对应的处理器,查看「环境变量」配置,是否存在
HTTPS变量且值为on。 - 修复方案:新增环境变量
HTTPS=on,确保PHP可以正确识别当前请求为HTTPS协议。
4. IIS站点绑定配置
排查站点绑定是否同时存在HTTP和HTTPS绑定,且HTTP绑定排在HTTPS绑定之前,IIS自动生成重定向地址时会默认使用排序靠前的绑定协议。
- 排查操作:右键站点选择「编辑绑定」,查看绑定列表的排序。
- 修复方案:删除不必要的HTTP绑定,或将HTTPS绑定调整到列表首位。
5. PHP应用目录下的本地配置文件
排查PHP应用根目录下是否存在.user.ini、web.config等本地配置文件,是否有写死HTTP协议的重定向规则(部分本地配置不会显示在IIS的URL重写模块列表中)。
- 排查操作:直接读取应用根目录下的
web.config文件内容,检查是否有硬编码HTTP协议的重定向配置。
内容的提问来源于stack exchange,提问作者Leventogenna
相关产品推荐
相关产品推荐

