Safari不加载index.php仅识别.htm文件问题咨询
原因说明
DirectoryIndex 是Apache服务端配置规则,本身与浏览器无关,出现Safari与其他浏览器表现不一致的核心原因有两点:
- Safari的默认页面缓存时效远长于Chrome、Firefox、Edge等浏览器,若你在修改
.htaccess之前曾用Safari访问过站点,当时的默认首页为index.htm,Safari会将根路径响应长期缓存,服务端配置更新后Safari仍优先读取本地旧缓存,未重新请求服务端拉取新索引页 - 部分主机服务商的Apache全局配置会限制
.htaccess修改DirectoryIndex的权限,你写入的规则实际未生效,其他浏览器无历史缓存,首次请求时服务端返回了index.php内容,而Safari沿用旧缓存结果,因此出现表现差异
无httpd.conf权限的解决方案
你可以在现有.htaccess文件中添加重写规则,绕过DirectoryIndex优先级限制,强制根目录请求指向index.php,规则如下:
RewriteEngine On RewriteRule ^$ /index.php [L]
配置完成后按以下步骤验证:
- 清空Safari全局缓存:打开Safari -> 顶部菜单栏「开发」-> 点击「清空缓存」,若未显示「开发」菜单,可进入Safari设置 -> 高级 -> 勾选「在菜单栏中显示开发菜单」
- 手动输入域名访问,不要使用旧书签
若要排查服务端配置是否生效,可使用curl命令请求根域名:
curl -I 你的站点域名
如果返回的响应头或内容对应index.php,说明服务端配置已生效,仅需清理Safari缓存即可;如果返回的仍是index.htm相关内容,添加上述重写规则即可解决问题。
内容的提问来源于stack exchange,提问作者EricGaskell
相关产品推荐
相关产品推荐

