php - MediaWiki 批量页面重命名

标签 php mediawiki

我需要重命名与 MediaWiki 中特定模式匹配的所有页面。对于任何包含 XXXXX 的页面,必须将其重命名为 YYYYY。这包括页面内容和页面名称。例如,wiki URL http://wiki.example.org/TfrmXXX_Rates应重命名为http://wiki.example.org/TfrmYYY_Rates ,任何包含 XXXXX 的文本都应替换为 YYYYY。

Replace Text extension不能用于此,因为它只能修改页面内容。我还需要重命名这些页面以及对它们的所有引用(包括跨维基链接)。

我尝试过的是:转储MySQL数据库,将所有出现的XXXX替换为YYYY,然后删除并使用修改后的SQL脚本重新创建wiki数据库,最后运行maintenance/rebuildall.php脚本(由MediaWiki提供) )。

问题是它不起作用。当我搜索关键字时,MediaWiki 会显示一些与相关页面内容的匹配。但当我打开该网址时,它显示“尚无内容”。我怀疑其原因是某些数据以 PHP 序列化形式存储,并且无法通过文本搜索/替换轻松替换。

所以问题是:如何重命名 MediaWiki 数据库中的所有引用,包括内容和页面名称?

最佳答案

Mediawiki 附带 maintenance script重命名页面及其任何链接。您可以从 MySQL 运行此查询来填充名为 /tmp/names.txt 的文件:

SELECT CONCAT(page_title, '|', REPLACE(page_title, 'XXXXX', 'YYYYY')) INTO OUTFILE '/tmp/names.txt' FROM page WHERE page_title LIKE '%XXXXX%';

这会给你这个文件:

TfrmXXX_Rates|TfrmYYY_Rates
TfrmXXX_Other|TformYYY_Other
...

然后您应该能够运行此命令:

php /path/to/mediawiki/maintenance/moveBatch.php --noredirects /tmp/names.txt

Replace Text extension应该适用于文本中非链接的任何其他引用。

关于php - MediaWiki 批量页面重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36545907/

相关文章:

css - 单元格中的 Mediawiki CSS 代码

ssl - F5 负载均衡器后面主站点的子文件夹中站点的 iframe 的混合内容错误

php - 使用 get 方法自定义 URL Helper 重定向

php - 未找到默认实体翻译的翻译形式

javascript - jQuery.text() 获取 html 价格并使用数字字段增加价格

wiki - 将引用框添加到mediawiki的最简单方法是什么?

apache - 我的 MediaWiki 网站不会将样式表作为文本/CSS 提供

permissions - Mediawiki - 只有特定的用户组可以阅读/访问

php - 使用php编辑mysql表中的数据

javascript - Chart.js 不使用 mySQL 数据库中的数据呈现图表