Manual:常见问题解答

This page is a translated version of the page Manual:FAQ and the translation is 100% complete.


即时支援
  • mediawiki-l,MediaWiki邮件列表
  • #mediawiki 連線 - IRC聊天频道。
  • 服务台
有关支持场所的完整列表,请参见联系交流
关于MediaWiki使用的常见问题解答(FAQ)。 如果您的问题既没有在此处也没有在MediaWiki技术文档MediaWiki用户文档中得到回答,请在支持场所询问。

基础知识

MediaWiki、Wikimedia(维基媒体基金会)、Wikipedia(维基百科)和wiki之间有什么区别?

这个问题经常被问到:请参见Wikipedia、Wikimedia、MediaWiki和wiki的区别 页面获得更详细的答案。

我能将MediaWiki用于某个用途么?

MediaWiki是自由软件:这意味着你可以以任意方式使用它而不需要法律上的许可。 更進一步言,MediaWiki的授權條件只適用於程式本身。 这意味着尽管很多Wiki采用自由的协议授权,但这不是强制的。Wiki上内容的授权协议由你自己决定。 当然,作为支持维基百科运行的软件而发展起来的项目,我们鼓励你使用一个自由许可证授权你的wiki上的内容,但是这不是必须的。

如果你希望修改MediaWiki软件,没有问题,但是有一些限制,查看GNU通用公共许可证第二版的全文了解详细信息。 因为MediaWiki是免费使用的,在适用的法律允许的范围内没有担保责任。

如何创建wiki?

创建一个wiki通常意味着在一个服务器上安装,并有权管理一个MediaWiki实例。 选项有很多,取决于你的专业程度:

  • 要在自己的服务器上创建wiki,参见安装指南
  • 部分服务商提供一键安装,或者允许根据要求创建wiki。 参见托管服务,查看各种不同的选择。

本站点(MediaWiki.org)或者说维基媒体基金会并不允许个人创建wiki。

安装与配置

到哪里下载MediaWiki?

点击这里前往下载页。你会下载到一个.tar.gz归档文件。 你也可以通过Git从我们的存储库中下载

如何安装MediaWiki?

安装MediaWiki的预计时间为10到30分钟,包括上传与复制文件,和运行配置脚本。 请参阅手册:安装指南 ,你也可以在那里找到最低系统需求

能通过软件包管理器安装MediaWiki吗?

大部分Linux发行版都会以分发包的格式提供MediaWiki软件。 MediaWiki开发团队认为您应该向您的Linux发行版提供者咨询安装与配置的事宜。 负责维护这些分发包的独立社群和公司应该向您提供安装指南。

但是请注意因为软件源中的MediaWiki可能不是最新的,所以请密切关注你所使用的扩展的兼容性。

參見: 软件捆绑包

我能在一个服务器上运行多个MediaWiki网站吗?

只要满足下列条件,您就可以在一台服务器上安装多个wiki:

  • 您安装了MediaWiki的多个实例(例如,使用像Bitnami MediaWiki Stack这样的软件包),在不同目录中,每个Wiki一个

或者

  • 您的每一个wiki使用各自不同的数据库

或者

  • 您的每一个wiki的数据库前缀不相同(对于Postgres,在不同的模式或用户下,也能达到这一效果) If you want to use the same LocalSettings.php file for both, you must ensure $wgServer is dynamically set to the correct value.

要了解这些选项的相关信息,可分别参见$wgDBname $wgDBprefix

有关设置Wiki系列(wikifarm)的更多信息,请参阅手册:Wiki农场

如何安装现有的Wiki,例如维基百科或维基词典?

主要(但不一定是最简单的)方法是导入。参见下面的Wiki导入

(非MediaWiki方法,例如Xowa和Kiwix可以在w:Wikipedia:Database download获得。

MediaWiki需要shell访问吗?

终端访问(SSH访问)在安装MediaWiki的过程中并不是必须的,但我们强烈推荐你这么做。 如果不能进行终端访问,您可能难以对您的wiki进行备份,或难以将它升级到更新的版本。 如果完全脱离终端访问,您将不能完成一些维护任务。 許多的擴充程式可以良好的實作殼層存取。

如何安装扩展?

参见Manual:扩展 获取安装与编写扩展的相关信息。 参见Category:扩展 以寻找现有扩展。

如何添加额外的名字空间?

参见创建自定义名字空间

如何启用文件上传?

文件上传是MediaWiki常用的功能之一,但在目前所有的发行版中都被默认关闭了。 要启用它们,首先要让网站服务器上的上传文件夹(默认为images)可被写入(chmod -R 777 ./images或允许Apache用户写入内容,等等),然后在LocalSettings.php中将$wgEnableUploads 设为true值。 如果你在上传时遇到了一个"failed to mkdir" (无法创建文件夹)错误,你可能需要调整你的服务器上的文件权限。

參見: 手册:配置文件上传

如何允许上传其他格式的文件?

MediaWiki使用$wgFileExtensions 配置来限定允许上传的文件格式。 通常该指令位于您的MediaWiki安装副本根目录的LocalSettings.php中。

例如,要允许用户上传PDF格式文件,请将下面一行增加到LocalSettings.php中:

$wgFileExtensions[] = 'pdf';

可以像下面这样一次添加多个文件类型:

$wgFileExtensions = array_merge( $wgFileExtensions, [ 'pdf', 'txt', 'mp3' ] );
參見: 手册:配置文件上传

如何在MediaWiki中显示数学公式?

MediaWiki允许用户插入数学公式。 参见Extension:數學 获取安装指南。

如何设置我的Wiki的时区?

参见手册:时区

如何强制刷新一个缓存页面?

有时您需要刷新被缓存的页面,比如当页面的导航栏发生了变化后。在页面的动态URL后加上&action=purge即可。

例如: https://www.mediawiki.org/w/index.php?title=Main_Page&action=purge

或在页面的短型URL后加上?action=purge

例如: https://www.mediawiki.org/wiki/Main_Page?action=purge

參見: 手册:刷新缓存 , 手册:index.php的参数

如何完全停用缓存?

将下列语句加入LocalSettings.php文件即可:

$wgParserCacheType = CACHE_NONE; $wgCachePages = false;

"文件已损坏或者扩展名不正确"

有些用户报告说,在向已允许扩展名列表中增加文件格式后,软件会发生错误。 出错后的文字类似于下方:

文件已损坏或存在无效扩展名。请重新检查并上传文件。

作为一个可能的解决方案,将值设置为$wgMimeDetectorCommand 。例如:在Unix或Linux,这应该为

$wgMimeDetectorCommand = "file --brief --mime";
也请参阅: Manual:MIME type detection

安装程序没创建一个管理员用户

有时,可能因为安装程序没有成功运行或是user表丢失的缘故导致没有管理员账户。 这里有几个修复的方法:

maintenance/createAndPromote.php

  • 在shell中运行maintenance/createAndPromote.php --username <新用户名> --password <对应用户的密码>。 要让新创建的用户既成为管理员又成为行政员,加入--bureaucrat参数。

这会创建一个新用户并授予管理员权限。 要获取帮助,运行脚本并带参数--help

在数据库中修改

  • 用一般方法注册一个账户 (Special:UserLogin).
  • API中查看用户ID。
  • 在数据库中执行下列SQL语句:
    • INSERT INTO user_groups ( ug_user, ug_group ) VALUES ( <id>, 'bureaucrat' ), ( <id>, 'sysop' );
用你刚刚查阅的用户ID替换<id>
注意:如果LocalSettings.php中定义了$wgDBprefix ,记得加在表名前。 例如$wgDBprefix是“XYZ”,那么表名是 XYZuser_groups

临时允许任何人修改用户权限,然后给初始化时创建的用户分配权限

  警告: 最好在进行这项操作时关闭你的wiki的外部访问, 因为此时你的wiki更容易受到破坏。

为了能修改用户权限,这个操作的关键是允许所有用户修改权限。

  • 用一般方法注册一个账户 (Special:UserLogin), 然后登录。
  • LocalSettings.php的底部添加以下一行代码:
    • $wgGroupPermissions['user']['userrights'] = true;
  • special:userrights中将新创建的用户添加到管理员与行政员组。
  • 从您的 LocalSettings.php 中删除 $wgGroupPermissions['user']['userrights'] = true; 行。 此步非常重要,因为如果不移除将导致任何人都可以修改用户权限,这很危险。

如何重置密码?

参见手册:重置密码

如何创建或修改跨wiki链接?

参见手册:Interwiki

如何让显示的URL更短?

(i.e. /wiki/Article_Name as opposed to /w/index.php?title=Article_Name)

参见手册:短链接

我能像目录一样组织页面吗,像/wiki/subdir/PageName这样?

参见手册:$wgNamespacesWithSubpages Help:子页面

下载和使用MediaWiki是免费的吗?

是的,在自由软件意义下的自由。 参见Project:版权 了解本站已有内容在许可协议方面的问题。

如何管理用户权限?

参见手册:用户权限 以获取一般信息。 参见手册:阻止访问 获取限制访问的方法与措施。

如何阻止匿名用户编辑页面?

建议修改$wgGroupPermissions 。 添加下面一行到LocalSettings.php :

$wgGroupPermissions['*']['edit'] = false;

通过Extension:AbuseFilter ,管理员可以临时阻止匿名编辑。

参见: 阻止访问 , 手册:用户权限

如何阻止匿名用户查看页面?

  • 添加下面一行到LocalSettings.php的最下面:
$wgGroupPermissions['*']['read'] = false;

参见手册:$wgWhitelistRead 。 更多信息请参见Manual:Preventing access#Restrict viewing of all pages

如何阻止创建账户?

  • 添加下面一行到LocalSettings.php的最下面:
$wgGroupPermissions['*']['createaccount'] = false;

更多信息请参见Manual:Preventing access#Restrict account creation

如何在注册时要求提供电子邮件地址?

参阅手册:$wgEmailConfirmToEdit

如何让MediaWiki只读?

MediaWiki版本:
1.5
参见手册:$wgReadOnly

如何修改默认的用户设置?

MediaWiki版本:
1.4

MediaWiki 将默认的用户选项保存在MainConfigSchema.php 。 别修改它,做参考就好。

如您需要在最近更改列表中預設隱藏小編輯 DefaultSettings.php 表明:

public const DefaultUserOptions = [
        ...
	'hideminor' => 0,
        ...
]

要改偏好設定的话,在LocalSettings.php里添加:

$wgDefaultUserOptions["hideminor"] = 1;

要改变默认搜索的名字空间,在LocalSettings.php里设置$wgNamespacesToBeSearchedDefault 。 例如要默认搜索主命名空间和分类命名空间:

$wgNamespacesToBeSearchedDefault = [
    NS_MAIN => true,
    NS_CATEGORY => true,
];

某些情况下,你在改变默认设置后希望改变现有用户的设置。

要这样做的话,在maintenance目录运行userOptions.php 。 第一次运行建议加入--dry参数(参数--dry用来模拟运行,不会修改数据库)。

php userOptions.php --dry --nowarn hideminor --old 0 --new 1

另外,在进行实际操作前建议备份数据库(如果只是使用--dry则不必)。

參見: 手册:$wgDefaultUserOptions

如何优化MediaWiki的运行速度?

參見: Manual:性能调优

如何启用搜索建议?

参见Manual:Enabling autocomplete in search box

如何让MediaWiki软件的行为遵守GDPR?

参阅GDPR (General Data Protection Regulation) and MediaWiki software

升级

参见Manual:升级

移动

能把我的wiki移动到另一台电脑上吗?

是的。 应该可以。 实质上就是备份你的安装然后“还原”到一台新电脑上。 然后对配置进行一些适当的调整以适合新服务器的需要。

那么,如何做?

跟随手册:移动一个维基 上的指令即可。

定制界面

如何修改左上角的标志?

  小心: 别覆盖默认的logo (/resources/assets/wiki.png); 因为升级时会被覆盖。
可以通过修改站点的CSS来使用更大的大小,但是 MediaWiki 不会缩小过大的logo。 但是,只有一部分图像(即左上角)会被显示,如果这个角是白色的,看起来就像是图像没有显示。
方形徽标的推荐大小为135x135px,但徽标不一定必须是方形,特别是如果徽标中的图像下方包含文本。 最大的logo大小是~160x160px(Vector),~155x155px(Monobook)。

左上角的标志是由LocalSettings.php 中的$wgLogos 选项决定。 MediaWiki installations prior to MediaWiki 1.35.0, used $wgLogo .

有两个方法可以修改:

  1. 通过标准上传界面向你的wiki上传一张图片, 这样以后修改起来也容易,所以你可能希望保护它防止被篡改。
    LocalSettings.php添加$wgLogos参数, 例如:
    $wgLogos = "{$wgUploadPath}/6/62/mylogo.png";
    
  2. 或者向服务器直接上传一张图片.
    LocalSettings.php添加$wgLogo参数, 例如:
    $wgLogos = "{$wgScriptPath}/mylogo.jpg";
    
    (这个例子中图片和LocalSettings.php在一个文件夹中。)

要改变某些页面的标志,覆盖#p-logo的background-image属性,或者使用像扩展:LogoFunctions 这样的扩展。

如何编辑wiki的CSS?

别直接编辑像 common.css 一类的CSS文件,因为这样会使你日后的升级变得困难 (例如可能会被覆盖)。 要改变全站的样式,编辑MediaWiki:Common.css,要改变特定皮肤的样式(例如 Vector ),编辑MediaWiki:Vector.css

MediaWiki 預設 CSS (main.css),會被 MediaWiki:Common.css 和皮肤内置的样式表文件覆盖。

如何隐藏左侧的导航栏

换句话说,你希望内容占据全部的宽度来隐藏logo和左侧导航?

要隐藏它们,将下面的代码添加到MediaWiki:Common.css中.

#column-content { margin: 0 0 .6em 0; }
#content { margin: 2.8em 0 0 0; }
#p-logo, .generated-sidebar, #p-lang, #p-tb, #p-search { display:none; }
#p-cactions { left: .1em; }

要只在用户按下F11时隐藏,将下面的代码添加到你wiki的MediaWiki:Common.js

document.onkeydown = function( e ) {
	if( e == null ) e = event
	if( testKey( e, 122 ) ) { //F11
		appendCSS('#column-content {margin: 0 0 .6em 0;} #content {margin: 2.8em 0 0 0;} #p-logo, .generated-sidebar, #p-lang, #p-tb, #p-search {display:none;} #p-cactions {left: .1em;} #footer {display:none;}');
		return false;
	}
}

function testKey( e, intKeyCode ) {
	if( window.createPopup )
		return e.keyCode == intKeyCode
	else
		return e.which == intKeyCode
}

如何隐藏页面底部的分类列表?

你可以隐藏每个页面上显示的分类,修改MediaWiki:Common.css并添加以下内容:

.catlinks { display: none; }

如何改变点击左上角的标志后跳转到的页面?

默认情况下点击logo会返回到首页,要指定哪一个页面是首页,编辑MediaWiki:Mainpage。 如果你想要更改哪个内部网页是首页,编辑 MediaWiki:Mainpage

为了使站点logo链接到其他任意的网站,你可以在MediaWiki:Common.js中使用jQuery代码:

$("a.mw-wiki-logo").attr("href", "http://www.example.com");
$("a.mw-wiki-logo").attr("title", "前往example.com网站");

如何改变地址栏的图标(favicon)?

  • 把favicon.ico上传到你的服务器的根目录。
  • 或者编辑LocalSettings.php中的$wgFavicon ,添加 $wgFavicon = "$wgScriptPath/path/to/your/favicon.ico";

参见手册:$wgFavicon 以获取更多信息。

提示:favicon的大小应为16x16或32x32像素。

重写(Rewrite)规则

如果你有用URL重写规则从URL中移除“index.php”,你也需要为.ico加个例外。把下面一行加入到.htaccess中: 把下面一行加入到.htaccess中:

RewriteRule .*\.ico$ - [L]

这个规则必须在index.php的规则之前

注意区分大小写

记得favicon.ico的文件名全是小写(“favicon.ico”,而不是“Favicon.ico”)。 大多数的服务器(例如类UNIX系统)可能找不到有大写的文件名。

如何定义导航栏?

使用Vector皮肤的每一个页面左边是导航条,其内容由您的wiki上的MediaWiki:Sidebar页面决定。 关于定制这些内容的相关信息,参见Manual:界面/侧边栏

如何在每一个页面上放置一个消息(站点通告)?

在'MediaWiki:Sitenotice'放置一些文本。内容会显示在所有的页面上方。

你也可以在'MediaWiki:Anonnotice'上放置一些文本,当用户未登录时会出现在页面的上方。 建議在使用者登出之後,改成提供匿名使用者可見的將提醒功能,以確保匿名使用者能仍收到應有的提醒。

如何指定首页?

默认情况下,MediaWiki会寻找一个标题为首页的页面,将它作为默认页面。 这可以通过改变'MediaWiki:Mainpage '的内容去修改,指向一个不同标题的页面。 有时边栏中的“首页”链接可能没有改变,这时需要编辑'

如何改变首页的标题?

用移动页面选项移动首页即可。

通常你可能期望指定哪个页面是首页.

如何在首页隐藏标题?

MediaWiki 1.38以上

更改首页的显示标题可以通过修改MediaWiki消息MediaWiki:mainpage-titleMediaWiki:mainpage-title-loggedin(分别对应未登录和登录用户)来达成。首页标题可以通过将两个消息的内容都清空的方式(或者只清空其中一个,如果你仍然想让未登录的用户或者登录的用户看到标题)来隐藏。

MediaWiki 1.37及以下

  警告: This is not the recommended way to do this for Wikimedia projects as it may cause integration problems with extensions, gadgets and skins.

MediaWiki默认没有隐藏首页标题的功能(参阅工單T8129),但你可以用CSS隐藏标题。 或者,你可以使用NoTitle 扩展来完成。

将下面一行添加到你wiki上的MediaWiki:Common.css中:

body.page-Main_Page.action-view h1.firstHeading, body.page-Main_Page.action-submit h1.firstHeading { display: none; }

如果你的首页使用本地化的标题,或者你重新命名了首页,你需要更改page-Main_Page的部分。正确的参数可以通过查看首页的HTML源代码并搜索body标签来找到。

例如,如果您使用的為邏輯語言,那 body 的標籤將會如此:

<body class="mediawiki ltr sitedir-ltr ns-4 ns-subject page-uikipedi_as_ralju skin-vector action-view">

因此您需要加入這一行在MediaWiki:Common.css之中:

body.page-uikipedi_as_ralju.action-view h1.firstHeading, body.page-uikipedi_as_ralju.action-submit h1.firstHeading { display: none; }

如果你想隐藏掉首页在特定名字空间中的标题,比如“Help:首页”,则需要在你wiki的MediaWiki:Common.css中添加以下内容。

body.page-Help_Main_Page.action-view h1.firstHeading, body.page-Help_Main_Page.action-submit h1.firstHeading { display: none; }

Note the difference: body.page-Help_Main_Page in comparison to body.page-Help:Main_Page. The latter will not work.

如果無效,您或許使用了在此不支援的外觀語法,而或是您沒有更新MediaWiki:Mainpage就移動了主頁面 (MainPage) 的位置,在或者是您的 MediaWiki 沒有更新到最新版本。

如果你的皮肤不是使用h1标签和firstHeading类选择器的话,你需要自行调整。

如何隐藏目录?

目录 (TOC) 会在大于四个标题的页面上显示, 当然也有办法隐藏。

==== 某个页面 ====
把魔术字__NOTOC__放在页面上。
所有页面
扩展:无目录 扩展
或者
將以下規則添加到MediaWiki:Common.css
.toc, #toc { display: none; }
单个用户
用户可以把同样的规则添加到用户样式表中(例如common.css)。

如何改变界面文字?

使用 MediaWiki 命名空間 (namespace) 去轉換 介面 (Interface) 文字。 針對英語的在地化版本,可使用 MediaWiki:Englishmessagename:而針對其他語言的在地化版本,則可以使用 MediaWiki:Englishmessagename/languagecode 。 從1.9版本之後頁面的信息預設值就不再是原本的預設了。 創建頁面的時候,編輯區域預設會自動填滿。 在創建的新頁面會覆寫到原本的預設檔案時,建議將預設檔案令存檔名 (如 filename.default) 來做區隔及還原。 参见帮助:系统消息

如何编辑错误提示的系统消息?

Special:Allmessages包含所有系统消息(包括报错或者别的)的列表,可以编辑。

你也可以在URL的末尾加上?uselang=qqx或&uselang=qqx来显示每条界面消息的名称。

我如何更改界面语言?

要更改默认界面语言,可修改在LocalSettings.php$wgLanguageCode 的值,例如:

$wgLanguageCode = "fr";

您可能也需要绕过您的浏览器缓存来看见更改。

新的默认界面语言将应用到从未自定义它的所有用户上。

如果您希望为用户提供创建和选择某种语言中页面与界面元素(而不是wiki的默认语言)的能力,您需要翻译 扩展,这可以让您的wiki多语言化。

如果您希望为所有现有用户更改语言设置,使用userOptions.php 维护脚本即可。 例如要让所有英语用户改为设置法语,可运行:

php userOptions.php language --old en --new fr

如何去除某个标签(例如"文章"或"编辑")?

有关多一点的控制,参见:User:Subfader/Hide_page_tabs

编辑您的wiki上MediaWiki:Common.css,并添加这一行:

li#ca-edit { display: none; }

查看页面源代码以获取用于内容标签的多个“#ca-*” id。

这个设置只会在Monobook(或其分支,例如Vector)皮肤上工作,它也不会阻止用户编辑, 为此,请参阅手册:用户权限

如何增加一个标签?

请参见手册:用户组CSS和JavaScript 或编写您自己的扩展(参见:Manual:Hooks/SkinTemplateNavigation ):

下面的实例会移除讨论标签并 添加一个回到首页的标签,假设它叫做 extensions/AR-Tabs.php:

MediaWiki版本:
1.21
<?php
if( !defined( 'MEDIAWIKI' ) ){
	die( "This is not a valid access point.\n" );
}

$wgHooks['SkinTemplateNavigation'][] = 'replaceTabs';
function replaceTabs( &$skin, &$links) {  
	// Remove the talk action
	unset( $links['namespaces']['talk'] );
	$maintitle = Title::newFromText( wfMessage( 'mainpage' )->inContentLanguage()->text() );
	// Add an additional link
	$links['namespaces']['main'] = array(
		'class' => false, // false or 'selected', defines whether the tab should be highlighted
		'text' => wfMessage( 'sitetitle' )->text(), // what the tab says
		'href' => $maintitle->getFullURL(), // where it links to
		'context' => 'main',
	);
	return true;
}

然后把下面一行添加到LocalSettings.php中:

require_once("extensions/AR-Tabs.php");

LocalSettings.php的最下面

如何去除某个页面上的某个标签?

MediaWiki版本:
1.9

编辑MediaWiki:Common.css,下面的例子会移除首页上的讨论标签:

body.page-Main_Page li#ca-talk { display: none !important; }

要修改MediaWiki:Common.css,您必须属于Interface administrator 用户组。

参见: Manual:Hide page tabs

去除所有页面上的某一个标签

MediaWiki版本:
1.9

编辑MediaWiki:Common.css,下面的例子会移除所有页面上的讨论标签:

#ca-talk { display:none!important; }

其他需要移除的標籤還有 #ca-history, #ca-viewsource, #ca-view (條目), #ca-nstab-main (首頁), #ca-viewsource.

下拉菜单里的标签id有 #ca-watch, #ca-move, #ca-delete.

要修改MediaWiki:Common.css,您必须属于Interface administrator 用户组。

<span id="How_do_I_remove_the_"Talk_for_this_IP"_link_at_the_top_right_(e.g._when_$wgDisableAnonTalk _is_true)?">

如何去除"关于此IP地址的讨论"按钮(例如设置了 $wgDisableAnonTalk =True; 以后)?

可以在你的 Wiki 的 MediaWiki:Common.css 中添加这些来达到隐藏的效果:

#p-personal #pt-anonuserpage {
    display: none;
}

或者在 LocalSettings.php 中用 PersonalUrls hook 为匿名用户移除讨论页:

$wgHooks['PersonalUrls'][] = 'lfRemoveAnonUserpageLink';
function lfRemoveAnonUserpageLink( &$personal_urls, $title ) {
	unset( $personal_urls['anonuserpage'] );
	return true;
}

如何移除"登录/创建账户"链接?

LocalSettings.php添加下面的代码可以从个人工具栏中移除“登录/创建账户”链接:

$wgHooks['SkinTemplateNavigation::Universal'][] = function ( $skinTemplate, &$links ) {
	unset( $links['user-menu']['login'] );
	unset( $links['user-menu']['login-private'] );
	unset( $links['user-menu']['createaccount'] );
};

如何限制某些操作和访问特殊页面?

有两种不同的方式:

使用 .htaccess 文件

MediaWiki 不是为这种用法设计的! 不是所有服务器都支持.htaccess文件。 謹記,這個系統並非完全安全,只是一個稍微進一步隱藏連結的方式。

在伪静态化 Wiki 的过程中限制操作和特殊页面的使用可能有用: 例如你可能希望外部访问时像一个静态网站(没有历史,讨论,编辑功能等等),而内部访问时如平常一般。

在按照下面的方法隐藏链接以后,你可以在 Apache 上使用覆写规则 限制某些操作和特殊页面的访问:

# 锁定站点(禁用MediaWiki命令)

RewriteEngine On

#RewriteLog /tmp/rewrite.log

#RewriteLogLevel 9

## {{LC zh|C|zh-hans=参阅https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Parameters_to_index.php#Actions|zh-hant=參閱https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Parameters_to_index.php#Actions}}

RewriteCond %{QUERY_STRING} (.*action=.*)
RewriteRule .* http://www.my.domain.com?

RewriteCond %{REQUEST_URI} !^/index.php/Special:Search
RewriteCond %{REQUEST_URI}  ^(.*Special:.*)
RewriteRule .* http://www.my.domain.com?

## 一个都不放过……
RewriteCond %{QUERY_STRING} ^(.*Special:.*)
RewriteRule .* http://www.my.domain.com?

例如,上面的'http://www.my.domain.com/wiki/Page_name?action=edit'请求将被简单地重写为'http://www.my.domain.com'。 相同的,任一頁面在特殊的命名空間之中(除了 Special:Search ),會被寫成 'http://www.my.domain.com'

或者,你也可以为所有的类似请求使用RewriteRule .* - [F]以返回403(禁止访问)。 謹記,這為一個黑客手法,初衷并不是为了保护某个页面。

您需要調整以上的規則以符合您特殊 URL 的命名模式。

另外的问题是考虑封锁通过 API 获得 wiki 页面的功能。

<span id="Using_LocalSettings.php">

使用LocalSettings.php

要禁用某一个特定的特殊页面(例如Special:SpecialPages),你可以使用:

$wgSpecialPages['名称'] = DisabledSpecialPage::getCallback( '名称', '消息' );

此处名称是要被禁用的特殊页面的“规范”(英文)名称,消息是用户尝试访问该特殊页面时展示的消息。

要禁用某种操作,例如编辑(edit),你可以使用:

$wgActions['edit'] = false;

参见API:限制API使用 来禁用API模块。

以上是基本用法。通常你会希望根据条件来禁用特殊页面、操作或API模块。

如何改变页脚?

參見: 手册:页脚 , 手册:Configuration settings#Copyright

如何移除页脚中的"Powered by MediaWiki"或者其它图像?

编辑MediaWiki:Common.css:

#footer-poweredbyico { display: none; }

如果您想完全移除它,您可以在您的LocalSettings.php中使用$wgFooterIcons

unset( $wgFooterIcons['poweredby'] );

注意,这也将移除其他所有类似的Powered by图标,例如来自BlueSpice的。

如果你希望更改图标使用的图片,指向的URL,替代文本,或添加新图标,请参阅$wgFooterIcons 的文档获得关于自定页脚图标的更多信息。

我如何添加回复链接至默认签名波浪(~~~~)模板?

您可以在MediaWiki:SignatureMediaWiki:Signature-anon自定义签名。

例如 [[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|talk]]) 会放置一个讨论页链接, [[{{ns:user}}:$1|$2]] ([{{fullurl:{{ns:user_talk}}:$1|action=edit&section=new}} Reply]) 会放置一个直接增加新段落的链接。

用户可以通过参数设置自定义自己的签名。

<span id="How_can_I_change_what_the_‎<title>_of_each_page_is?_Where_do_I_make_changes?">

如何改變標題?

大部分你希望更改的内容可以在MediaWiki名字空间中找到。

要更改标题,文本,公告等,请前往Special:AllMessages,在此你可以查看希望更改的文字的页面名。 你需要以管理员身份登录来编辑MediaWiki空间的保护条目。

要改变在浏览器标题栏中显示的标题,编辑MediaWiki:Pagetitle。 像编辑其它 wiki 页面一样编辑这个页面。

在最近的MediaWiki版本中,MediaWiki:Pagetitle的默认设置为$1 - {{SITENAME}}。如果{{SITENAME}}產生了錯誤的文字,您需要在您的LocalSettings.php設定$wgSitename

记得在改变后清除你的浏览器缓存来查看改变。

MediaWiki能自动首字母大写$wgSitename吗?

可以, 这可通过使用$wgCapitalLinks 配置设置更改。

如何在新窗口打开外部链接?

参见手册:$wgExternalLinkTarget

我能阻止MediaWiki格式化文本吗?

用“‎<nowiki>‎</nowiki>”标记包围不希望格式化的文本即可。

例子:

svn co <nowiki>http://svn.example.com/myproject/</nowiki>

结果:
svn co http://svn.example.com/myproject/

如何强制用户先预览再提交编辑?

參見: 手冊:強制預覽 , 扩展:强制预览

如何在编辑页面上增加更多按钮?

參見: [[Special:MyLanguage/Manual:Custom edit buttons|

如何在编辑器中增加插入字符的链接?

安装并配置擴展:CharInsert

如何在自己的wiki上使用不同的皮肤(例如維基百科舊的Monobook皮肤)?

参阅手册:$wgDefaultSkin 来设置你wiki的默认皮肤。

如何在显示打印版本时不显示外部链接?

将下面的代码添加到你的wiki上的MediaWiki:Print.css中:

#content a.external.text:after,
#content a.external.autonumber:after {
	content: none;
}

这会覆盖 MediaWiki 源代码中的默认样式设置。 需要更多信息,请参考Manual:CSS

或者你希望在打印版本中为外部链接加下划线:

#content a.external {
    text-decoration: underline !important;
}

如何隐藏页面底部的分类列表?

試試看這個解方

如何改变首页上的标签的名称?

要更改选项卡的文本,作为维基百科中使用的一个示例,首先打开页面“MediaWiki:Mainpage-nstab”。

记得清除缓存来查看结果。 不要忘记保存页面。

如何更改背景色?

要更改页面内容和选项卡之外的MediaWiki界面的背景色,请将以下CSS添加到MediaWiki的[[MediaWiki:Common.css]]页面:

/* Changes the background color of the bottom and left of each page, up to behind half of the logo: */
body {
  background: red;
}

/* Changes the background color behind the top half of the logo and at top of each page: */
#mw-page-base {
  background: red;
}

这会将选项卡、搜索和页面内容外部的背景颜色更改为红色。 参见Manual:CSS 以获取更多信息。

如何加载外部字体?

这个例子指的是谷歌字体,一个可以与MediaWiki一起使用的免费开源字体库。 转到https://fonts.google.com/,找到您喜欢的字体,然后单击“加号”(+)图标选择它们。 选择要添加的一种或多种字体。 单击弹出通知的选项卡,然后选择“@IMPORT”。将生成的CSS复制并粘贴到[[MediaWiki:Common.css]]中。下面的示例使用Noto Sans和Noto Serif。它们是Android操作系统的默认字体,对Unicode文本有很好的支持。

@import url( 'https://fonts.googleapis.com/css?family=Noto+Sans|Noto+Serif ');

/* Changes the default font used for MediaWiki to Noto Sans (does not include headings or monospaced text): */
body {
  font-family: "Noto Sans", sans-serif;
}

/* Changes the default font used for MediaWiki headings to Noto Serif: */
#content h1, 
#content h2 {
  font-family: "Noto Serif", serif;
}

How to hide the "Your edit was saved" notification?

Edit the wiki page MediaWiki:Common.css on your wiki to include the line .postedit {display: none;}. See Manual:Interface/Stylesheets for more information.

基本使用

如何编辑页面?

点击页面上的 编辑 链接即可编辑。 在默认的 Vector 皮肤中,它是在条目内容上方的一个标签 會顯示一個包含源代码的表單。 當你完成編輯修改,點下 Save 按鈕提交你的修改。

參見: Help:编辑页面

如何创建一个页面?

有几个方法创建一个新页面:

  • 创建一个指向它的内部链接,然后点击它.
  • 转到你希望创建的页面,例如 http://www.example.com/index.php?title=New_page ,然后点击"创建" 或 "创建源代码" 链接。

在某些wiki上,失败的搜索中会包含创建页面的链接。

參見: Help:创建新页面

能删除一个旧版本的页面吗?

旧版本会为了方便复查或回退更改而保留在数据库中, 不过管理员可能会因为法律原因或为了减少数据库占用的空间而希望删除某些版本。

  • 管理员可以删除整个页面再回=恢复某些版本
  • 新版的MediaWiki(1.14+)中,可以启用修订版本删除 功能来允许有权限的用户从编辑历史中移除一个版本.
  • maintenance/deleteOldRevisions.php 维护脚本可以进行大量删除修订版本。
另外參見: Manual:Removing embarrassment

如何删除某个页面的某些版本?

请參見: 修订版本删除

或者你可以删除整个页面再恢复你需要的版本.

有没有一个编辑教程?

这里和维基媒体计划上有些教程可以参考: 另外也有標籤語法的慘考,如 「 Meta 」。

如何查看某个页面的打印版本?

MediaWiki内置了一套用于打印的css样式表,你可以在你的浏览器中打开打印预览窗口来查看.

或者你可以使用边栏的打印版本链接(如果启用了Collection 扩展,则是打印/导出).

如何使用模板?

参见Help:模板

我能使用维基共享资源上的多媒体文件吗?

是的,鼓励你通过设置手册:$wgUseInstantCommons 来使用.

另外参見: 即时共享资源

如使用一个模板作为签名?

参数设置里有一个“原始签名”的选项, 然而输入框的长度不够长。 如果你想要更多呢?

你需要建立两个用户页

  1. 创建第一个页面(FIRST PAGE)
  2. 前往您的参数设置,勾选“原始签名”并在签名中放置{{FIRST PAGE}}。 保存
  3. 创建第二个页面(SECOND PAGE)(可能是第一个页面的子页面)
  4. 回到第一个页面(FIRST PAGE),并放置{{SECOND PAGE}}。
  5. 去到第二页面(SECOND PAGE)和放置你所需要的代码成为你要的签名。

如果你还没有这个结构,你还需要插入你所有的签名代码进去原始代码当你的签名被用,因为软件会插入"SUBST"进你的设置。 你可能不会介意这点,就是在这种情况下你只需要一个页面。 如果你要原始代码只显示{{FIRST PAGE}}(这比较清洁),那你只需要使用两页的结构。

我如何在我的wiki安装副本中添加沙盒功能?

大多数情况下,沙盒是一个任何用户可以编辑的页面. 这只是个你可以自由决定的普通页面,MediaWiki并没有这种核心功能. 你也许注意到维基百科上的沙盒像是自动清空的,但这不完全对.

清空沙盒是由用户(或是机器人)定时完成的. 这并不完全正确;有许多志愿者运行机器人来清理这些,并定期将它们恢复到特定状态。

参见Extension:SandboxLink ,其会添加一个指向用户的个人沙盒(个人用户页的某个子页面)的链接到个人工具菜单中。

如何在个人工具栏(右上角)加入一个沙盒链接?

如果包含,表明你需要安装SandboxLink 扩展。

如何运行一个多语言wiki?

导入wiki

从MediaWiki XML 转储中导入

參見: 手册:从XML备份文件文件导入

从其他wiki软件迁移

本节缺少信息——请协助添加。

从其他类型文件中导入

有多种可以帮助将HTML或者其他标记语言转化成MediaWiki标记的工具.

开发者和系统管理员工具
终端用户工具
  • wikEd - 一个为 MediaWiki 设计的编辑器,可以导入 HTML(和 Word 生成的 HTML)。
指南

从其他网站(例如维基百科)导入的模板不工作

你需要安装一些在导出源wiki上使用的扩展,比如Scribunto TemplateStyles ParserFunctions Cite 。 同时确定你复制了需要的CSSJavaScript

进一步配置

如何让多个wiki使用一个凭据登录?

如果你正在分割一个wiki为多个,可以使用$wgSharedDB $wgSharedTables 来让不同的wiki使用同一个user数据库。 你也可以共享那些不依赖于未共享的表或是特定于某个子wiki的表, 参阅手册:共享数据库 获得示例和更多信息。

  • 如果您的wiki已经建立并且您想切换到单点登录,则可以使用扩展CentralAuth 。 它具有比共享的user表更多的功能,但配置起来更加困难,并且它针对维基媒体风格的设置进行了定制。 但是,它比尝试将多个user表完全合并为一个更容易。

如何允许HTML标签?

参阅手册:$wgRawHtml 手册:$wgGroupPermissions 手册:阻止访问

  小心: 此功能容易被破坏者滥用

也请参阅Extension:Secure HTML Extension:HTMLets ,这些方法可以让你更安全的插入HTML.

如何为MediaWiki增加新功能或是修复bug?

改进MediaWiki(换句话说, 成为MediaWiki开发者)的几个基本步骤是:

  • 安装Git
  • 从Git克隆MediaWiki源码.
  • 在你的电脑上运行web服务器,PHP和数据库服务器 (设置它们让你窝火? 遇到问题就求救呗~)
  • 在你的电脑上运行MediaWiki (同样让你窝火? 方法同上)
  • 修复问题或是增加你期望的新功能,没啥想法?
  • 编辑源代码和相关的文件
  • 接着看Gerrit/教程

如何运行一个机器人?

參見: 手册:机器人

或许可以试试Pywikibot 框架。

如何设置 noindex nofollow

LocalSettings.php 中添加$wgNoFollowLinks = false;

如何设置一个小型wiki 农场?

參見: 手册:Wiki农场

如何添加meta标签?

OutputPage类包含一个用来添加meta标签的addMeta方法. RequestContext 可用于获取相关的OutputPage对象。

$out->addMeta ( 'description', '这是一个meta标签描述。' );

为什么...?

…帮助名字空间是空的?

现在帮助名字空间默认是空的. 是在你的wiki上还是MediaWiki.org上提供帮助由你决定. 显然,您可以轻松链接访问者以帮助其他地方的资源。

现在我们还没有一个清楚明了,国际化而且自由的文档。 不过希望复制一些帮助信息到你的网站?没问题!Help:索引 中的内容在基于MediaWiki搭建的网站上应该都可以使用,而且没有授权问题. 参阅Project:公有领域帮助

…升级后某些图像无法显示?

有些用户报告说在升级后无法显示某些图片, 文件存在,图像描述页面显示unknowncode>/unknown的MIME类型,在某些情况下,还显示有关潜在危险文件的警告。

可以在终端运行maintenance/rebuildImages.php。 来在数据库中设置新的MIME类型.

MediaWiki 1.21及更新版本实现了响应式图像。 由于一个bug,如果服务器区域设置设置为使用逗号而不是点来表示小数点,则图像可能无法在某些浏览器/设备上呈现。 这可以通过使用浏览器工具检查页面上的中型或大型图像的缩略图,查看HTML代码,并查看srcset属性在表示时是否包含逗号而不是点来确认1.5x值。

…png格式的图片没有缩略图?

有时升级了PHP版本以后MimeMagic.php函数的工作方式发生了变化,或者内置函数mime_content_type无法识别PNG格式, 试着在web上搜索mime_content_type png获得关于如何修复它们的信息.

有关详细信息,请参见文件已损坏或扩展名无效

…不能下载MediaWiki 1.43?

MediaWiki 1.43 是在开发中的版本, 如果你想尝试的话,你可以从Git下载, 或者通过 mediawiki-master.tar.gz 下载最新的Tarball.

…某个在维基百科中的功能没法在我的wiki上工作?

维基百科(或是Wikimedia的其他网站)运行的是MediaWiki的开发版本(现在是1.44.0-wmf.4 (a8dd895)),这意味着某些功能可能与现在的稳定版并不一致. 再加上使用多个扩展,这意味着这些wiki和您的特定设置之间的功能可能会有所不同。

…在Fedora上设置好权限后却得到了一个403错误?

Fedora Core 默认启用SELinux . 参阅这个页面获得关于设置SELinux的更多信息.

...我得到需要安装一些外部依赖项(例如通过Composer)

许多网站只处理zip档案,我们只提供gz压缩的tar档案,因此档案必须在上传前重新压缩。 这不应该是一个障碍,但似乎有些归档工具偶尔无法将所有文件都包含在大型档案中。 发生这种情况时,将省略供应商文件夹,使用户留下相当不明确的错误消息。

将tar存档重新压缩为zip存档时,请使用命令行工具。

…自动注销了?

这个问题和Cookie或是会话有关,参阅登录问题获得解决方案。

如果这种情况不断发生在所有用户身上则可能意味着缓存配置错误。设置$wgSessionCacheType = CACHE_DB;可用于确定缓存是否是问题的原因。如果这样可以解决问题您仍应该调查缓存配置的问题。

…留着账户是个好主意?

很多时候,您只是想从wiki中删除用户帐户,因为它属于垃圾邮件发送者帐户,或者您只是想要它。 适当的选择是封禁帐户或在需要时重命名。 答案:

我只是从user 中删除他的行?

Rob Church发布了以下内容关于wikitech-l邮件列表中的这个问题:

如果用户进行了编辑,则从user表中删除行会导致理论上缺少参照完整性。

现在,老实说,我想不出任何导致实际问题的条件,“未定义的行为”是我们使用的短语。

为了安全起见,我建议做的是对数据库运行几个快速更新:

UPDATE revision SET rev_user = 0 WHERE rev_user = <current_user_id>
UPDATE archive SET ar_user = 0 WHERE ar_user = <current_user_id>

这样做会导致MediaWiki将修订版视为在生成页面历史记录时匿名处理,这应该可以消除这些例程试图从其他表中检查用户详细信息所导致的任何问题。

如果用户导致了日志条目,即logging表中的行或上传的图像,那么情况会变得更加棘手,因为您必须开始清理所有行,并且它可能会变得有点乱,所以如果除了编辑之外,用户还做了其他任何事情,我强烈建议您无限期地封禁它们。

如果用户名是令人反感的或不受欢迎的,那么你可以考虑使用RenameUser 扩展名重命名它。

另外一個選擇就是給予管理者'hideuser' 的權限,然後無限期的禁止此使用者編輯權限,並從編輯者名單中移除。

Extension:用户合并 也有用。

…Special:Statistics的页数是否太少?

默认设置$wgArticleCountMethod 设置为link。 这意味着Special:Statistics页面上的“内容页面”数仅统计包含至少一个内部链接的页面。 可以通过将$wgArticleCountMethod设置为any来更改。 然后,运行updateArticleCount.php 和/或initSiteStats.php 。 (在维基媒体网站上,initSiteStats.php在每月的1号和15号运行。) 仍然可能有错误的行为,例如参见phab:T212706

反垃圾相关

如何用$wgSpamRegex阻止多个字符串?

$wgSpamRegex 是強大的页面内容過濾器。 在正则表达式里添加多个项目可能把事情弄得很糟糕。 请考虑使用下面的方法:

$wgSpamRegexLines[] = 'display\s*:\s*none';
$wgSpamRegexLines[] = 'overflow\s*:\s*auto';
[...]
$wgSpamRegex = '/(' . implode( '|', $wgSpamRegexLines ) . ')/i';

这段代码范例很方便的在正则表达式里添加额外的字符串而无须每次都费时费力再做调整。 这段代码也展示其他两个很流行的屏蔽一些最常见的垃圾信息攻击的过滤器。

參見: Extension:SpamRegex

有没有其他的方法对抗垃圾骚扰?

参阅手册:打击垃圾信息 来了解像Captcha一类的反垃圾骚扰的方法。

反破坏相关

参阅手册:应对垃圾骚扰 获得对抗破坏的一些提示。

现在在哪?

到哪里提交bug报告和功能请求?

Phabricator 提交Bug报告和功能请求. 参阅如何反馈一个错误

发生了一个奇怪的错误,我该怎么办?

我尝试过了,但是没用.

我遇到了一个问题,我发现FAQ有解决方案, 也照着FAQ做了,但是没用!!!!

十有八九是你没清除缓存, 有一个非常简单的方法可以访问一个未缓存的页面.在你的地址栏上 選擇在位址欄之中有頁面標題(如 Main_Page)的 URL, 的后面随便输入个标题,按下Enter键,看看会不会遇到相同的问题. 檢查該頁面是否也有相同問題。

MediaWiki使用服务器端和客户端缓存,所以简单清除客户端缓存并不够. 参见上述相关条目来得知更多信息。

或许你该检查别的:

  • 你编辑的是正确的文件吗?试着在你编辑的文件里乱写一通,有什么坏掉了吗?
    • phpinfo.php(一个只包含<?php phpinfo() ?>的文件)是调试的好工具。 把它上传到你的服务器上, 打开它,查找php.ini中指定的文件位置.
  • 你有把设置放在正确的部分吗? 你有在php.ini中创建重复的目录吗? 记得把新的设置加到LocalSettings.php的最下面,而不是最上面。
  • 如果你有创建 .htaccess, 请确定AllowOverrides打开了吗? 可以问问你的主机商.

有个没提到的问题,怎么办?

如果你已经仔细研究了上面的常见问题并且还是找不到答案的话,请尝试以下方法:

參見 section below 了解如何謝開法者以及其他有此方面知識的使用者。

运气不好,没有得到帮助咋办?

查看联系交流 上列出的支持场所。

参见