事情的经过是这样的:之前新建了一个书籍的命名空间,ID号为1504,参考的是bluespice的规则,最近正好在编写心百科的帮助文档,重新翻阅了一下官方文档,发现bluespice跟我设想的不一样。于是萌生了修改命名空间的念头,以防哪天脑子一抽想用bluespice又会造成冲突的局面。
先来看看之前的LocalSettings.php的配置代码:

define("NS_BOOK", 1504); 
define("NS_BOOK_TALK", 1505);

命名空间常量NS_BOOK的ID号为1504,如果修改常量的话,直接刷新网站并没有什么问题,但是一旦修改了ID那就会出现下面的错误:
mediawiki-badtitle.png
原本是以书籍:开头的页面链接,现在成了特殊:Badtitle/NS1504:,点击后显示没有页面然后需要重新创建。
从搜索结果来看,有网友是建议不要轻易修改ID,出错之后最好的解决办法就是改回去,不过这也不符合我折腾的性格。
重新查阅官方文档,其中提到了命名空间冲突的问题,解决办法有两种,一个是使用维护脚本namespaceDupes.php,另一种通过修改数据库。
前者我试了一下,不知道是对修改ID的情况无效还是我的操作不当,反正我没成功。
后者的话,从官方文档来看,主要还是在page表中。打开数据表,果然出错的页面中,page_namespcae的数值还是1504。

UPDATE page SET page_namespace = REPLACE(page_namespace, '1504', '3000')

操作前最好备份一下数据库。刷新页面,页面恢复。

注意:
修改之后如果出现搜索无结果的现象,最好停用高级搜索插件然后用维护脚本执行一下php rebuildtextindex.php,如果不放心的话也可以选择执行php rebuildall.php,具体可参考本站文章《MediaWiki使用高级搜索“找不到和查询相匹配的结果”》。

最后修改:2021 年 02 月 24 日
如果觉得我的文章对你有用,请随意赞赏