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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:32:18