Yii2高级模板Docker环境下伪静态URL资源404问题
Docker环境下Yii2高级模板后端静态资源404问题解决方法
问题分析
生产环境正常但Docker环境出现静态资源404,核心原因通常是容器内Web服务器的重写规则未生效、根目录配置错误,或者Yii2的资源路径配置未适配Docker环境。
具体解决步骤
检查Web容器根目录配置
确保Docker容器的Web根目录指向项目根目录(而非backend/web或frontend/web)。比如使用php-apache镜像时,确认httpd.conf中DocumentRoot设置为项目挂载路径(如/var/www/html)。启用Apache Rewrite模块
Docker官方php-apache镜像默认未开启rewrite模块,需在Dockerfile或启动脚本中添加:a2enmod rewrite && service apache2 restart调整Yii2后端配置
在backend/config/main.php中补充资源管理器的baseUrl配置,确保资源生成路径正确:return [ // ...其他配置 'components' => [ 'request' => [ 'baseUrl' => '/admin', 'scriptFile' => '@backend/web/index.php', 'scriptUrl' => '/admin/index.php', ], 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'baseUrl' => '/admin', 'rules' => [ // ...你的路由规则 ], ], 'assetManager' => [ 'baseUrl' => '/admin/assets', ], // ...其他组件 ], ];允许.htaccess生效
修改Apache的虚拟主机或全局配置,确保项目根目录允许.htoverride:<Directory "/var/www/html"> AllowOverride All Require all granted </Directory>若使用自定义Docker镜像,可将这段配置加入
httpd.conf或单独的vhost文件中。修复静态资源权限
进入容器,确保backend/web/assets目录的权限正确:chown -R www-data:www-data /var/www/html/backend/web/assets chmod -R 755 /var/www/html/backend/web/assets
内容的提问来源于stack exchange,提问作者law_81
相关产品推荐
相关产品推荐

