MediaWiki Docker镜像部署时load.php 404致样式/脚本缺失问题
MediaWiki 1.42.3 无样式/脚本(load.php 404)问题排查与解决
问题核心
请求/wiki/load.php时,反向代理转发路径错误,容器内Apache无法识别该请求为资源加载脚本,反而将其解析为文章标题,返回HTML页面而非CSS/JS资源。
解决方案步骤
1. 修正NGINX反向代理配置
当前proxy_pass未添加末尾斜杠,导致请求路径被错误转发。修改配置如下:
location /wiki { proxy_pass http://127.0.0.1:8080/; # 注意末尾的斜杠 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
- 末尾斜杠的作用:NGINX会将
/wiki之后的路径部分直接追加到proxy_pass的目标URL后,例如/wiki/load.php会转发为http://127.0.0.1:8080/load.php,匹配容器内MediaWiki的根路径(/var/www/html)。
2. 确认MediaWiki LocalSettings.php配置
保持以下配置(匹配外部访问路径):
$wgScriptPath = "/wiki"; # 外部访问脚本的前缀路径 $wgArticlePath = "/wiki/$1"; # 文章URL格式 $wgServer = "https://example.org"; # 替换为你的实际域名
- 请勿随意修改
$wgScriptPath为/或/w,否则会导致资源路径与实际访问路径不匹配。
3. 强制刷新MediaWiki缓存
即使已运行update.php,仍需清理缓存确保配置生效:
- 进入MediaWiki容器:
docker exec -it [你的容器名称/ID] bash - 运行缓存清理命令:
php maintenance/purgeCache.php php maintenance/rebuildLocalisationCache.php --force
4. 验证容器内Apache重写规则
官方MediaWiki镜像已预配置URL重写,可确认/etc/apache2/sites-available/000-default.conf中/var/www/html目录的AllowOverride设置为All:
<Directory /var/www/html> AllowOverride All Require all granted </Directory>
- 该配置确保Apache加载MediaWiki根目录下的
.htaccess文件,正确解析load.php等资源请求。
验证
修改配置后重启NGINX和MediaWiki容器,访问页面并检查浏览器控制台:
- 确认
load.php请求返回200状态码 - 页面样式和脚本正常加载
内容的提问来源于stack exchange,提问作者Bryan
相关产品推荐
相关产品推荐

