我需要重命名与 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/