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

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,仍需清理缓存确保配置生效:

  1. 进入MediaWiki容器:
    docker exec -it [你的容器名称/ID] bash
    
  2. 运行缓存清理命令:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:47:18