必须清除视图缓存并注册自定义扩展名:执行 php artisan view:clear 清除缓存,再在 AppServiceProvider 的 boot() 中调用 $this->app['view']->addExtension('html', 'php') 告知Laravel以PHP引擎解析.html文件。

在Laravel项目中将Blade模板(.blade.php)替换为其他后缀(如.html、.twig、.php)时,常因视图解析器未注册、缓存未清除或服务提供者加载顺序错误导致页面报错或内容不渲染。
修改视图后缀前必须关闭视图缓存
执行 php artisan view:clear 清除现有编译缓存,否则Laravel仍会尝试加载旧的.blade.php编译文件,导致“View [xxx] not found”或空白页。
这一步不可跳过,【缓存未清会导致新后缀模板完全不生效,且错误信息不提示后缀问题】。
注册自定义视图扩展名
在 AppServiceProvider 的 boot() 方法中添加:
$this->app['view']->addExtension('html', 'php');
这行代码告诉Laravel:遇到 .html 后缀的视图文件,按 PHP 引擎解析(即等同于 .php 模板),而非默认的 Blade 编译流程。若你用 Twig,则需先安装 twig/twig 并绑定 TwigEngine。
覆盖默认视图解析器(高级场景)
方法一:重写 Illuminate\View\FileViewFinder 类并绑定到容器
创建新类 App\View\CustomViewFinder,继承原类,在 findInPaths() 中修改 $extensions 数组,加入 'html' 或 'twig';然后在 AppServiceProvider@register() 中执行:$this->app->bind(ViewFinderInterface::class, CustomViewFinder::class);。
方法二:直接修改配置(仅限开发环境)
在 config/view.php 中找到 'extensions' 键,改为:['html' => 'php', 'php' => 'php']。注意:此方式在 Laravel 10+ 中已被弃用,仅适用于 8.x~9.x 且未启用自动发现服务提供者的项目。
强制刷新视图路径映射
第一步:删除 storage/framework/views/ 目录下所有文件;
第二步:运行 php artisan config:clear → php artisan cache:clear → php artisan view:clear;
第三步:重启 php artisan serve(如果正在运行)。Laravel 视图查找器会在首次请求时重新扫描 resources/views/ 下所有匹配扩展名的文件,旧缓存残留会干扰路径识别。











