手册:常见问题
![]() |
|
关于MediaWiki使用的常见问题解答(FAQ)。 如果您的问题在这里和MediaWiki文档都找不到答案的话,可以试试到IRC 聊天频道和支持论坛寻求帮助。 | ![]() |
一言以蔽之
MediaWiki、Wikimedia(维基媒体)、Wikipedia(维基百科)和wiki间的区别是什么?
这个问题经常被问到;请参见Wikipedia、Wikimedia、MediaWiki和wiki的区别 页面获得更详细的答案。
我能将MediaWiki用于某个用途么?
MediaWiki是自由软件:这意味着你可以以任意方式使用它而不需要法律上的许可。 更進一步言,MediaWiki的授權條件只適用於程式本身。 这意味着尽管很多Wiki采用自由的协议授权,但这不是强制的。Wiki上内容的授权协议又你自己决定。 当然,作为支持维基百科运行的软件而发展起来的项目,我们鼓励你使用一个自由许可证授权你的wiki上的内容,但是这不是必须的。
如果你希望修改MediaWiki软件,没有问题,但是这里有一些限制,查看GNU通用公共许可证第二版的全文了解详细信息。 因为MediaWiki是免费使用的,在适用的法律允许的范围内没有担保责任。
安装和设置
到哪里里下载MediaWiki?
点击这里前往下载页。你会下载到一个.tar.gz归档文件。 你也可以通过Git从我们的版本库中下载。
如何安装MediaWiki?
安装MediaWiki的预计时间为10到30分钟,包括上传与复制文件,和运行设置脚本。 请参阅手册:安装指南 ,你也可以在那里找到最低系统需求。
能通过软件包管理器安装MediaWiki吗?
大部分Linux发行版都会以分发包的格式提供MediaWiki软件。 MediaWiki开发团队认为您应该向您的Linux发行版提供者咨询安装与配置的事宜。 负责维护这些分发包的独立社群和公司应该向您提供安装指南。
但是请注意因为软件源中的MediaWiki可能不是最新的,所以请密切关注你所使用的扩展的兼容性。
- 參見: 软件包
我能在一个服务器上运行多个MediaWiki网站吗?
只要满足下列条件,您就可以在一台服务器上安装多个wiki:
- 您安装了MediaWiki的多个实例(例如,使用像Bitnami MediaWiki Stack这样的软件包),在不同目录中,每个Wiki一个
或者
- 您的每一个wiki使用各自不同的数据库
或者
- 您的每一个wiki的数据库前缀不相同(对于Postgres,在不同的模式或用户下,也能达到这一效果)
要了解这些选项的相关信息,可分别参见$wgDBname 与$wgDBprefix 。
有关设置Wiki系列(wikifarm)的更多信息,请参阅手册:Wiki家族 。
要了解将多个wiki设置为使用相同服务器、数据库与资源的其他方法,参见来自Steve Rumberg(存档)用户的更深层的解释与进一步的意见。
如何安装现有的Wiki,例如维基百科或维基词典?
主要(但不一定是最简单的)方法是导入。参见下面的Wiki导入。
(非MediaWiki方法,例如Xowa和Kiwix可以在w:Wikipedia:Database download获得。
MediaWiki需要shell访问吗?
终端访问(SSH访问)在安装MediaWiki的过程中并不是必须的,但我们强烈推荐你这么做。 如果不能进行终端访问,您可能难以对您的wiki进行备份,或难以将它升级到更新的版本。 如果完全脱离终端访问,您将不能完成一些维护任务。 許多的擴充程式可以良好的實作殼層存取。
如何安装扩展?
参见扩展手册 获取安装与编写扩展的相关信息。 参见分類:擴充功能 以寻找现有扩展。
如何添加额外的名字空间?
参见创建自定义名字空间。
如何启用文件上传?
文件上传是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允许用户插入数学公式。 参见扩展:数学 获取安装指南。
如何设置我的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即可:
$wgEnableParserCache = false; // deprecated method $wgParserCacheType = CACHE_NONE; $wgCachePages = false;
"文件已损坏或者扩展名不正确"
有些用户报告说,在向已允许扩展名列表中增加文件格式后,软件会发生错误。 出错后的文字类似于下方:
- 文件已损坏或存在无效扩展名。请重新检查并上传文件。
可能的解决方案:
- 设定$wgMimeDetectorCommand 的值,例如:在Unix或Linux,您可以将它设为
$wgMimeDetectorCommand = "file --brief --mime";
- 编译/安装PHP插件fileinfo
- Fedora - yum install php-pecl-Fileinfo
安装程序没创建一个管理员用户
有时,可能因为安装程序没有成功运行或是用户表丢失的缘故导致没有管理员账户。 这里有几个修复的方法:
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
.
- 用你刚刚查阅的用户ID替换
临时允许任何人修改用户权限,然后给初始化时创建的用户分配权限
为了能修改用户权限,这个操作的关键是允许所有用户修改权限.
- 用一般方法注册一个账户 (Special:UserLogin), 然后登录.
- 在LocalSettings.php中加入下面一行
$wgGroupPermissions['user']['userrights'] = true;
- 在 special:userrights中将新创建的用户添加到管理员与行政员组.
- 将
$wgGroupPermissions['user']['userrights'] = true;
一行从LocalSettings.php中移除。 此步非常重要,因为如果不移除将导致任何人都可以修改用户权限,这很危险。
如何重置密码?
- 参见手册:重置密码
如何创建或修改跨wiki链接?
如何让显示的URL更短?
(i.e. /wiki/Article_Name as opposed to /w/index.php?title=Article_Name)
- 参见手册:短链接
我能像目录一样组织页面吗,像/wiki/subdir/PageName这样?
- 参见手册:$wgNamespacesWithSubpages 和⧼word-separator⧽Help:子页面
下载和使用MediaWiki是免费的吗?
是的,在自由软件意义下的自由。 参见Project:Copyrights 了解本站已有内容在许可协议方面的问题。
如何管理用户权限?
参见手册:用户权限 以获取一般信息。 参见手册:阻止访问 获取限制访问的方法与措施。
如何阻止匿名用户编辑页面?
建议修改$wgGroupPermissions
。
添加下面一行到LocalSettings.php
:
$wgGroupPermissions['*']['edit'] = false;
通过扩展:滥用过滤器 ,管理员可以临时阻止匿名编辑.
如何阻止匿名用户创建页面?
- 添加下面一行到
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。
如何在注册时要求提供电子邮件地址?
如何让MediaWiki只读?
MediaWiki版本: | ≥ 1.5 |
如何修改默认的用户设置?
MediaWiki版本: | ≥ 1.4 |
MediaWiki 将默认的用户选项保存在DefaultSettings.php 。 别修改它,做参考就好.
Say if you want to hide minor edits in recent changes by default. DefaultSettings.php says:
$wgDefaultUserOptions = [
...
'hideminor' => 0,
...
]
要改偏好設定的话,在LocalSettings.php里添加:
$wgDefaultUserOptions["hideminor"] = 1;
要改变默认搜索的名字空间,在LocalSettings.php里设置$wgNamespacesToBeSearchedDefault. 例如要默认搜索主名字空间和分类名字空间:
$wgNamespacesToBeSearchedDefault = array(
NS_MAIN => true,
NS_CATEGORY => true,
);
某些情况下,你在改变默认设置后希望改变现有用户的设置.
要这样做的话,在maintaince目录运行userOptions.php. 第一次运行建议加入 "--dry" 参数(这个参数用来模拟运行,不会修改数据库。)。
php userOptions.php --dry --nowarn hideminor --old 0 --new 1
另外,在进行实际操作前建议备份数据库。
如何优化MediaWiki的运行速度?
- 參見: 手册:性能调优
如何启用搜索建议?
How do MediaWiki and GDPR go together?
升级
- 参见手冊:更新
移动
能把我的wiki移动到另一台电脑上吗?
是的。 应该可以, 实质上就是备份你的安装然后"还原"到一台新电脑上. 然后对配置进行一些适当的调整以适合新服务器的需要.
那么,如何做?
跟随手册:移动wiki上的指令即可。
定制界面
如何修改左上角的标志?
左上角的标志是由LocalSettings.php中的$wgLogo选项决定.
有两个方法可以修改:
- 通过标准上传界面向你的wiki上传一张图片, 这样以后修改起来也容易,所以你可能希望保护它防止被篡改.
- 向LocalSettings.php添加$wgLogo参数, 例如:
$wgLogo = "{$wgUploadPath}/6/62/mylogo.png";
- 或者向服务器直接上传一张图片.
- 向LocalSettings.php添加$wgLogo参数, 例如:
$wgLogo = "{$wgScriptPath}/mylogo.jpg";
- (这个例子中图片和LocalSettings.php在一个文件夹中.)
要改变某些页面的标志,覆盖#p-logo的background-image属性,或者使用像扩展:LogoFunctions 这样的扩展.
![]() | 别覆盖默认的logo (/resources/assets/wiki.png ); 因为升级时会被覆盖. |
如何编辑wiki的CSS?
别直接编辑像 common.less 一类的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时隐藏,将下面的代码添加到 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
}
如何隐藏页面底部的分类列表?
添加这一行到你wiki的MediaWiki:Common.css中
.catlinks { display: none; }
我能自定义左侧顶部的标志吗,如果可以的话,怎样做?
商標圖示部分為一個程式片段而沒有 Body 的部分。 它可以由 p-logo 的 id 鑑定。 背景圖片使用 $wgLogo 變數, $wgLogo 變數定義在 DefaultSettings.php 之中。 為只為相對於網頁伺服器得跟目錄而非系統根目錄。 從 LocalSettings.php 重新定義這個去更換圖像。 如果設定錯誤則將不會有圖像出現在網頁上,如果發生此一狀況,請先檢查網頁伺服器的錯誤紀錄(error log),並根據錯誤原因做調整。 然而 p-logo 如果沒有被裁切的剛好的話,尺寸就必須要比標準尺寸大。 大小設定在 main.css (在 Monobook 裡面)的 p-logo 下,預設的設定是:
#p-logo {
z-index: 3;
position: absolute; /*needed to use z-index */
top: 0;
left: 0;
height: 155px;
width: 12em;
overflow: visible;
}
注意,如果您使用不同大小的 logo 標誌,而想要去改面 CSS 的話,請不要更動到 MediaWiki 原本的 CSS 程式碼。 除了可以用 MediaWiki:Monobook.css 改變 monobook 的外觀,以及用 MediaWiki:Vector.css 改變 vector 的外觀,MediaWiki:Common.css 可以同時滿足這些功能。
改变标志的大小
要注意因為 logo 上面還附加了一個標籤,所以如果您要減少 logo 的標籤程式碼,要記得必須要和 CSS 中的 #p-logo #p-logo:hover 的效果相容。 这些东西的默认设置是:
#p-logo a,
#p-logo a:hover {
display: block;
height: 200px;
width: 12.2em;
background-repeat: no-repeat;
background-position: 35% 50% !important;
text-decoration: none;
}
如何改变点击左上角的标志后跳转到的页面?
默认情况下点击logo会返回到首页,要指定哪一个页面是首页,编辑MediaWiki:Mainpage. 要在点击logo时前往任意的其他页面(不一定是你的wiki),你可以向LocalSettings.php中增加一个hook来覆盖默认设置.
若想使 site-logo 的連結可以被外部任意 URL 連結,您可以在 LocalSettings.php 去掛勾(hook) 到你的 site-logo 去覆寫原本的 logo 主頁面。
/* Change the main page url used in things like the logo to an absolute url */
$wgHooks['SkinTemplateOutputPageBeforeExec'][] = 'lfChangeMainPageURL';
function lfChangeMainPageURL( $sk, &$tpl ) {
$tpl->data['nav_urls']['mainpage']['href'] = "http://www.your-desired-url.com/"; // Point the main page url to an absolute url
return true;
}
/* Change the main page url used in things like the logo to a url of another page on the wiki */
$wgHooks['SkinTemplateOutputPageBeforeExec'][] = 'lfChangeMainPageURL';
function lfChangeMainPageURL( $sk, &$tpl ) {
$tpl->data['nav_urls']['mainpage']['href'] = Title::newFromText('ThePage')->getLocalURL(); // Point the main page url to a wiki page's url
return true;
}
如何改变地址栏的图标 (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:Interface/Sidebar.
如何在每一个页面上放置一个消息(站点通告)?
在MediaWiki:Sitenotice放置一些文本.内容会显示在所有的页面上方.
你也可以在MediaWiki:Anonnotice上放置一些文本,当用户未登录时会出现在页面的上方. 建議在使用者登出之後,改成提供匿名使用者可見的將提醒功能,以確保匿名使用者能仍收到應有的提醒。
如何指定首页?
默认的首页名称为"首页".编辑MediaWiki:Mainpage来改变. 可以從 MediaWiki:Mainpage 去修改。
有时边栏中的"首页"链接可能没有改变,这时需要编辑 MediaWiki:Sidebar.
如何改变首页的标题?
用移动页面选项移动首页即可.
通常你可能期望指定哪个页面是首页.
如何在首页隐藏标题?
MediaWiki默认没有隐藏首页标题的功能(参阅任务T8129),你可以用CSS 或者扩展:NoTitle extension完成.
将下面一行添加到你wiki上的MediaWiki:Common.css中:
body.page-Main_Page.action-view h1.firstHeading, body.page-Main_Page.action-submit h1.firstHeading { display: none; }
如果你的MediaWiki版本非常旧,或是你移动了首页却没更新MediaWiki:Mainpage,或是某些不支持这项设定的皮肤上,这可能无法工作
例如,如果您使用的為邏輯語言,那 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__
放在页面上.
- 所有页面
- 用 扩展:无目录 扩展
- 或者
- 將以下規則添加到MediaWikiCommon.css
.toc, #toc { display: none; }
- 单个用户
- 用户可以把同样的规则添加到用户样式表中(例如 common.css).
如何改变界面文字?
使用 MediaWiki 命名空間 (namespace) 去轉換 介面 (Interface) 文字。 針對英語的在地化版本,可使用 MediaWiki:Englishmessagename:而針對其他語言的在地化版本,則可以使用 MediaWiki:Englishmessagename/languagecode 。 從 1.9 版本之後頁面的信息預設值就不再是原本的預設了。 創建頁面的時候,編輯區域預設會自動填滿。 在創建的新頁面會覆寫到原本的預設檔案時,建議將預設檔案令存檔名 (如 filename.default) 來做區隔及還原。 参见Help:系统消息 。
- Special:Allmessages提供了一个系统消息的列表,通过编辑对应的消息文字可以进行修改.
- 要关闭MediaWiki名字空间, 使用 $wgUseDatabaseMessages设置.
- 要移除页面底部的隐私政策或者免责声明,用
-
替换 MediaWiki:Privacy 或 MediaWiki:Disclaimers 的内容.
我如何更改界面语言?
要更改默认界面语言,可修改在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。
如何增加一个标签?
请参见手册:用户组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 用户组。
去除所有页面上的某一个标签
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 用户组。
如何去除"关于此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['PersonalUrls'][] = 'lfRemoveLoginLink';
function lfRemoveLoginLink( &$personal_urls, $title ) {
unset( $personal_urls['login'] );
unset( $personal_urls['anonlogin'] );
unset( $personal_urls['createaccount'] );
return true;
}
如何限制某些操作和访问特殊页面?
在伪静态化 Wiki 的过程中限制操作和特殊页面的使用可能有用: 例如你可能希望外部访问时像一个静态网站(没有历史,讨论,编辑功能等等),而内部访问时如平常一般。
在按照下面的方法隐藏链接以后,你可以在 Apache 上使用rewrite rules 限制某些操作和特殊页面的访问:
# Lock down the site (disable MediaWiki commands) RewriteEngine On #RewriteLog /tmp/rewrite.log #RewriteLogLevel 9 ## See 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? ## Catch a trick... 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'
。
謹記,這為一個黑客手法,初衷并不是为了保护某个页面。
您需要調整以上的規則以符合您特殊 URL 的命名模式。
另外的问题是考虑封锁通过 API 获得 wiki 页面的功能。
如何编辑系统消息?
Special:Allmessages包含系统消息的列表,可以编辑.
如何改变页脚?
如何移除页脚中的"Powered by MediaWiki"或者其它图像?
#footer-poweredbyico { display: none; }
如果您想完全移除它,您可以在您的LocalSettings.php中使用$wgFooterIcons
:
unset( $wgFooterIcons['poweredby'] );
Note that this will also remove other powered-by icons, e.g. also the one coming from BlueSpice.
参阅$wgFooterIcons
获得关于自定页脚图标的更多信息..
我如何添加回复链接至默认签名波浪(~~~~)模板?
您可以在MediaWiki:Signature或MediaWiki:Signature-anon自定义签名
例如 [[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|talk]])
会放置一个讨论页链接, [[{{ns:user}}:$1|$2]] ([{{fullurl:{{ns:user_talk}}:$1|action=edit§ion=new}} Reply])
会放置一个直接增加新段落的链接.
用户可以通过参数设置自定义自己的签名.
能改变标题吗,怎样做?
大部分你希望更改的内容可以在MediaWiki名字空间中找到,
前往Special:AllMessages并搜索你希望更改的文字获得页面的位置,要编辑的 话还需要管理员权限.
要改变在浏览器标题栏中显示的标题,编辑MediaWiki:Pagetitle. 像编辑其它 wiki 页面一样编辑这个页面。
在最近的MediaWiki版本中,MediaWiki:Pagetitle的默认设置为$1 - {{SITENAME}}。如果{{SITENAME}}產生了錯誤的文字,您需要在您的LocalSettings.php設定$wgSitename 。
记得在改变后清除你的浏览器缓存来查看改变.
MediaWiki能自动首字母大写$wgSitename吗?
可以, 这可通过使用$wgCapitalLinks 配置设置更改。
如何在新窗口打开外部链接?
我能阻止MediaWiki格式化文本吗?
用"<nowiki></nowiki>
"标记包围不希望格式化的文本即可.
例子:
svn co <nowiki>http://svn.example.com/myproject/</nowiki>
结果:
svn co http://svn.example.com/myproject/
如何强制用户先预览再提交编辑?
如何在编辑页面上增加更多按钮?
如何在编辑器中增加插入字符的链接?
安装并配置擴展:CharInsert .
如何在自己的wiki上使用不同的皮肤(例如維基百科舊的Monobook皮肤)?
MediaWiki版本: | ≥ 1.16 |
Monobook 是 MediaWiki 默认的皮肤,1.17 以后换成了 Vector。 参阅手册:$wgDefaultSkin 来设置你wiki的默认皮肤.
如何在显示打印版本时不显示外部链接?
将下面的代码添加到你的wiki上的MediaWiki:Print.css中:
#content a.external.text:after,
#content a.external.autonumber:after {
content: none;
}
这会覆盖 MediaWiki 源代码中的默认样式设置。 需要更多信息,请参考手冊:樣式表 。
或者你希望在打印版本中为外部链接加下划线:
#content a.external {
text-decoration: underline !important;
}
How do I print footnotes at the bottom of each printed page?
Try this StackOverflow solution: Printed HTML per-page footnotes
如何改变首页上的标签的名称?
要更改选项卡的文本,作为维基百科中使用的一个示例,首先打开页面“MediaWiki:Mainpage-nstab
”。
记得清除缓存来查看结果. 不要忘记保存页面。
基本使用
如何编辑页面?
点击页面上的 编辑 链接即可编辑。 在默认的 Vector 皮肤中,它是在条目内容上方的一个标签 會顯示一個包含源代码的表單。 當你完成編輯修改,點下 Save 按鈕提交你的修改。
- 參見: Help:編輯頁面
如何创建一个页面?
有几个方法创建一个新页面:
- 创建一个指向它的内部链接,然后点击它.
- 转到你希望创建的页面,例如
http://www.example.com/index.php?title=New_page
,然后点击"创建" 或 "创建源代码" 链接.
在某些wiki上,失败的搜索中会包含创建页面的链接.
- 參見: Help:创建新页面
能删除一个旧版本的页面吗?
旧版本会为了方便复查或回退更改而保留在数据库中, 不过管理员可能会因为法律原因或为了减少数据库占用的空间而希望删除某些版本.
- 管理员可以删除整个页面再回=恢复某些版本
- 新版的 MediaWikis (1.14+)中,可以启用RevisionDelete(修订版本删除)功能来允许有权限的用户从编辑历史中移除一个版本.
maintenance/deleteOldRevisions.php
维护脚本可以进行大量删除修订版本。
如何删除某个页面的某些版本?
- 请參見: 修订版本删除
或者你可以删除整个页面再恢复你需要的版本.
有没有一个编辑教程?
这里和维基媒体计划上有些教程可以参考: 另外也有標籤語法的慘考,如 「 Meta 」。
- 本网站上的 Help:Editing pages
- Meta上的 Editing
- 中文维基百科上的“编辑页面”指引
如何查看某个页面的打印版本?
MediaWiki内置了一套用于打印的css样式表,你可以在你的浏览器中打开打印预览窗口来查看.
或者你可以使用边栏的打印版本链接(如果启用了Collection 扩展,则是打印/导出).
如何使用模板?
- 参见Help:模板
我能使用维基共享资源上的多媒体文件吗?
是的,鼓励你通过设置手册:$wgUseInstantCommons 来使用.
- 另外参見: 即时共享资源
如使用一个模板作为签名?
参数设置里有一个“原始签名”的选项, 然而输入框的长度不够长。 如果你想要更多呢?
你需要建立两个用户页
- 创建第一个页面(FIRST PAGE)
- 前往您的参数设置,勾选“原始签名”并在签名中放置{{FIRST PAGE}}。 保存
- 创建第二个页面(SECOND PAGE)(可能是第一个页面的子页面)
- 回到第一个页面(FIRST PAGE),并放置{{SECOND PAGE}}。
- 去到第二页面(SECOND PAGE)和放置你所需要的代码成为你要的签名。
如果你还没有这个结构,你还需要插入你所有的签名代码进去原始代码当你的签名被用,因为软件会插入"SUBST"进你的设置。 你可能不会介意这点,就是在这种情况下你只需要一个页面。 如果你要原始代码只显示{{FIRST PAGE}}(这比较清洁),那你只需要使用两页的结构。
我如何在我的wiki安装副本中添加沙盒功能?
大多数情况下,沙盒是一个任何用户可以编辑的页面. 这只是个你可以自由决定的普通页面,MediaWiki并没有这种核心功能. 你也许注意到维基百科上的沙盒像是自动清空的,但这不完全对.
清空沙盒是由用户(或是机器人)定时完成的. 这其实不太正确,通常用户或机器人会定时把沙盒会回退到某个状态。
如何在个人工具栏(右上角)加入一个沙盒链接?
You need to install the SandboxLink extension.
如何运行一个多语言wiki?
要让你的wiki提供工具进行翻译和自定义界面文字,可以使用Translate 扩展,文档在这.
导入wiki
从MediaWiki XML 转储中导入
从其他wiki软件迁移
![]() | 此頁面已过时。 |
随 MediaWiki 软件包提供的 UPGRADE 文件包含了一些信息。
下面提供了一种方法:
因为 MediaWiki 不使用 驼峰式大小写 格式化链接, 记得自己在链接上加方括号 [[ ]] 。 您可以这样做:
首先通过 importUseModWiki.php 获得 ImportStage1.txt 文件 (用 > 重定向输出到文件,起别的名字也可以)。
第二步,
sed '/Importing/!s/\ [A-Z]\w*[a-z]\w*[A-Z]\w*[a-zA-Z]/\ \[\[&\]\] /g' ImportStage1.txt > ImportStage2.txt
这应该会为驼峰式大小写的链接自动创建正确的链接。
在子页面上无法工作,如何修复?
然后,
sed 's/upload\:\w*\.\w*/http\:\/\/aberwiki\.org\/uploads\/& /g' ImportStage2.txt > ImportStage3.txt
这将修复你的上传连接。 改变你的替换文本使其符合你的
URL ,例如http://www.yourwiki.org/uploads/filename
你现在可以通过数据库操作导入 ImportStage3.txt 了,例如:
mysql -u<mysqluser> -p<yourpass> <db name> < ImportStage3.txt
importUseModWiki.php
输出的是 XML 而不是 SQL ,可能是你的 MediaWiki 版本很新。 这种情况下你可以导入 XML ,参见 Importing a Wikipedia database dump into MediaWiki 中 'Import XML' 一节。 记得重新构建数据库,那里告诉了怎么做。从其他类型文件中导入
有多种可以帮助将HTML或者其他标记语言转化成MediaWiki标记的工具.
- 开发者和系统管理员工具
- HTML::WikiConverter::MediaWiki - 一个转换HTML成MediaWiki标记的perl模块.
- Wikificator -转换XHTML至MediaWiki标记的JavaScript工具.
- Edit.php 、importImages.php 和ImportTextFile.php维护脚本可以用来导入文本和图像。
- 终端用户工具
- wikEd - 一个为 MediaWiki 设计的编辑器,可以导入 HTML(和 Word 生成的 HTML)。
- 指南
MediaWiki自动导入脚本
来自 wiki_import - MediaWiki auto import script:
描述
這個腳本用來匯入整個裝有所需資料的資料夾,而資料夾的架構須符合維基的分類排序規定(hierarchy)。
功能
效益性:使用既有的知識庫製作維基條目卻沒有標明出處。 可維護性:以維基的等級分類樹原則編撰目錄的架構。 精確性:自動的匯入或是操作所有常用的資料格式。 完成性:涵蓋所有可應用的情形,即使需要為此分別撰寫每一個單獨的維基條目。 多功能性:使用者可以很自由的編輯自己想要的外觀與功能。
快速参考
wiki_import.sh $ $Revision: 1.1 $
MediaWiki 自動的資料匯入腳本:
用法 wiki_import.sh [OPTIONS]...
這個腳本用來匯入整個裝有所需資料的資料夾,而資料夾的架構須符合維基的分類排序規定(hierarchy)。
資料匯入的規格是以標準輸入為準。
选项
-s, --sect=n 导入文章维基的根分类部分(必填) -1, --header 包括标准标题(类别层次结构路径和通知) -l, --link 链接到网站上的实际文件 -f, --footer 包括标准页脚(文章分类) -R, --res[=p] 在页脚中添加限制标记为 '{{<Res Param|Root Category> Restricted}}' (default=`$_opt_sect')
配置设定
-p, --php=fn MediaWiki导入PHP脚本规范 -r, --root=n 整个wiki站点的根分类名称 -m, --max=n max_allowed_packet用于导入mysqld -u, --user=n 用于导入的wiki用户 -a, --arch=p 根据链接到归档文件的根URL
例如:
echo ./path/to/file.ext | wiki_import.sh -1 -l -f -s 'Customer Support' -R
至于细节的其余部分,请参见wiki_import。
从其他网站(例如维基百科)导入的模板不工作
你需要安装一些在导出源wiki上使用的扩展,比如Scribunto ,TemplateStyles ,ParserFunctions 或Cite 。 同时确定你复制了需要的CSS和JavaScript.
进一步配置
如何让多个wiki使用一个凭据登录?
如果你正在分割一个wiki为多个,可以使用$wgSharedDB 和$wgSharedTables 来让不同的wiki使用同一个用户数据库。 你也可以共享那些不依赖于未共享的表或是特定于某个子wiki的表, 参阅Manual:Shared database获得示例和更多信息.
- 如果您的wiki已经建立并且您想切换到单点登录,则可以使用扩展CentralAuth 。 它具有比共享用户表更多的功能,但配置起来更加困难,并且它针对维基媒体风格的设置进行了定制。 但是,它比尝试将多个用户表完全合并为一个更容易。
如何允许HTML标签?
参阅手册:$wgRawHtml 和 手册:$wgGroupPermissions 和⧼word-separator⧽手册:阻止访问 。
![]() | 此功能容易被破坏者滥用 |
也请参阅Extension:Secure HTML 和 Extension:HTMLets ,这些方法可以让你更安全的插入HTML.
如何为MediaWiki增加新功能或是修复bug?
改进 (换句话说, 黑掉)MediaWiki的几个基本步骤是:
- 安装Git
- 从Git克隆MediaWiki源码.
- 在你的电脑上运行web服务器,PHP和数据库服务器 (设置它们让你窝火? 遇到问题就求救呗~)
- 在你的电脑上运行MediaWiki (同样让你窝火? 方法同上)
- 修复问题或是增加你期望的新功能,没啥想法?从 "修复那些恼人的bug"开始呗.
- 编辑源代码和相关的文件
- 接着看Gerrit/Tutorial
如何运行一个机器人?
- See: 手册:机器人
或许可以试试Pywikibot 框架。
如何设置 noindex nofollow
在LocalSettings.php 中添加$wgNoFollowLinks = false;
。
如何设置一个小型wiki 农场?
- See: 手册:Wiki家族
如何添加meta标签?
OutputPage类包含一个用来添加meta标签的addMeta方法. RequestContext可用于获取相关的OutputPage对象。
要添加更多元标记,只需添加更多行作为函数addMetaTags()的最后几行,如:
$out->addMeta ( 'description', 'This is a meta description.' );
为什么...?
…帮助名字空间是空的?
现在帮助名字空间默认是空的. 是在你的wiki上还是MediaWiki.org上提供帮助由你决定. 显然,您可以轻松链接访问者以帮助其他地方的资源。
现在我们还没有一个清除明了,国际化而且自由的文档. 不过希望复制一些帮助信息到你的网站?没问题!帮助:索引 中的内容在基于MediaWiki搭建的网站上应该都可以使用,而且没有授权问题. 参阅Project:PD help,更多的帮助可以在元维基上的"MediaWiki Handbook"中找到.
…升级后某些图像无法显示?
有些用户报告说在升级后无法显示某些图片,
文件存在,图像描述页面显示unknowncode>/unknown
的MIME类型,在某些情况下,还显示有关潜在危险文件的警告。
可以在终端运行maintenance/rebuildImages.php
。
来在数据库中设置新的MIME类型.
最新版本的MediaWiki实现响应图像。
由于一个bug,如果服务器区域设置设置为使用逗号而不是点来表示小数点,则图像可能无法在某些浏览器/设备上呈现。
这可以通过使用浏览器工具检查页面上的中型或大型图像的缩略图,查看HTML代码,并查看srcset
属性在表示时是否包含逗号而不是点来确认1.5x
值。
…png格式的图片没有缩略图?
有时升级了PHP版本以后MimeMagic.php函数的工作方式发生了变化,或者内置函数mime_content_type无法识别PNG格式, 试着在web上搜索mime_content_type png获得关于如何修复它们的信息.
参阅这里获得更多信息。
…不能下载MediaWiki 1.36 ?
MediaWiki 1.36 是在开发中的版本, 如果你想尝试的话,你可以从Git下载, 或者通过 mediawiki-master.tar.gz 下载最新的Tarball.
…某个在维基百科中的功能没法在我的wiki上工作?
维基百科(或是Wikimedia的其他网站)运行的是MediaWiki的开发版本(现在是1.37.0-wmf.1 (5e964b8)),这意味着某些功能可能与现在的稳定版并不一致. 再加上使用多个扩展,这意味着这些wiki和您的特定设置之间的功能可能会有所不同。
- 参阅从git下载获得关于下载开发版本的更多信息.
- 在Special:Version页面获得这个Wiki正在运行的MediaWiki版本.
- You may also be missing several 扩展手册 that are installed on Wikipedia, see #Templates imported from other wikis (such as Wikipedia) don't work for me
…在Fedora上设置好权限后却得到了一个403错误?
Fedora Core 默认启用SELinux . 参阅这个页面获得关于设置SELinux的更多信息.
...我得到需要安装一些外部依赖项(例如通过Composer)?
许多网站只处理zip档案,我们只提供gz压缩的tar档案,因此档案必须在上传前重新压缩。 这不应该是一个障碍,但似乎有些归档工具偶尔无法将所有文件都包含在大型档案中。 发生这种情况时,将省略供应商文件夹,使用户留下相当不明确的错误消息。
将tar存档重新压缩为zip存档时,请使用命令行工具。
…自动注销了?
这个问题和Cookie或是会话有关,参阅登录问题获得解决方案。
如果这种情况不断发生在所有用户身上则可能意味着缓存配置错误。设置$wgSessionCacheType = CACHE_DB;
可用于确定缓存是否是问题的原因。如果这样可以解决问题您仍应该调查缓存配置的问题。
…留着账户是个好主意?
![]() | 此頁面的一部分(与Manual edits to rev_user fields in the database; MediaWiki uses the actor table now相关)已过时。 |
很多时候,您只是想从wiki中删除用户帐户,因为它属于垃圾邮件发送者帐户,或者您只是想要它。 适当的选择是封禁帐户或在需要时重命名。 答案:
我只是从User table中删除他的行?
Rob Church发布了以下内容关于wikitech-l邮件列表中的这个问题:
"如果用户进行了编辑,则从用户表中删除行会导致理论上缺少参照完整性。现在,老实说,我想不出任何导致实际问题的条件,“未定义的行为”是我们使用的短语。
为了安全起见,我建议做的是对数据库运行几个快速更新:
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将修订版视为在生成页面历史记录时匿名处理,这应该可以消除这些例程试图从其他表中检查用户详细信息所导致的任何问题。
如果用户导致了日志条目,即日志记录表中的行或上传的图像,那么情况会变得更加棘手,因为您必须开始清理所有行,并且它可能会变得有点乱,所以如果除了编辑之外,用户还做了其他任何事情,我强烈建议您无限期地封禁它们。
如果用户名是令人反感的或不受欢迎的,那么你可以考虑使用RenameUser 扩展名重命名它。
另外一個選擇就是給予管理者 'hideuser' 的權限,然後無限期的禁止此使用者編輯權限,並從編輯者名單中移除。
扩展:用户合并 也有用。
…Special:Statistics的页数是否太少?
默认设置,$wgArticleCountMethod
设置为link
。
这意味着Special:Statistics页面上的“内容页面”数仅统计包含至少一个内部链接的页面。
可以通过将$wgArticleCountMethod
设置为any
来更改。
然后,运行updateArticleCount.php
和/或initSiteStats.php
。
(在维基媒体网站上,initSiteStats.php
在每月的1号和15号运行。)
仍然可能有错误的行为,例如参见phab:T212706。
反垃圾相关
到那里获得垃圾黑名单?
spam blacklist擴展能够从Git中获取,就像是其他所有官方支援擴展。 参阅README和扩展:SpamBlacklist 获得详细信息.
如何用$wgSpamRegex阻止多个字符串?
$wgSpamRegex 是強大的页面内容過濾器。 在正则表达式里添加多个项目可能把事情弄得很糟糕。 请考虑使用下面的方法:
$wgSpamRegexLines[] = 'display\s*:\s*none';
$wgSpamRegexLines[] = 'overflow\s*:\s*auto';
[...]
$wgSpamRegex = '/(' . implode( '|', $wgSpamRegexLines ) . ')/i';
这段代码范例很方便的在正则表达式里添加额外的字符串而无须每次都费时费力再做调整。 这段代码也展示其他两个很流行的屏蔽一些最常见的垃圾信息攻击的过滤器。
- See also: Extension:SpamRegex
有没有其他的方法对抗垃圾骚扰?
参阅Manual:Combating spam 来了解像Captcha一类的反垃圾骚扰的方法.
反破坏相关
参阅Manual:Combating vandalism 获得对抗破坏的一些提示
现在在哪?
到哪里提交bug报告和功能请求?
去Phabricator 提交Bug报告和功能请求. 参阅How to report a bug.
发生了一个奇怪的错误,我该怎么办?
- 看看Manual:Errors and Symptoms 里有没有提及。
- 尝试寻找更多关于问题的信息,查看手册:如何调试 。
- 查看 section below 了解如何聯繫 developers 以及具有此知識辦景的使用者。
我尝试过了,但是没用.
- 我遇到了一个问题,我发现FAQ有解决方案, 也照着FAQ做了,但是没用!!!!
十有八九是你没清除缓存, 有一个非常简单的方法可以访问一个未缓存的页面.在你的地址栏上 選擇在位址欄之中有頁面標題(如 Main_Page)的 URL, 的后面随便输入个标题,按下Enter键,看看会不会遇到相同的问题. 檢查該頁面是否也有相同問題。
MediaWiki使用服务器端和客户端缓存,所以简单清除客户端缓存并不够. 参见 relevant entry above 来得知更多信息。
或许你该检查别的:
- 你编辑的是正确的文件吗?试着在你编辑的文件里乱写一通,有什么坏掉了吗?
- phpinfo.php(一个只包含
<?php phpinfo() ?>
的文件)是调试的好工具。 把它上传到你的服务器上, 打开它,查找php.ini中指定的文件位置.
- phpinfo.php(一个只包含
- 你有把设置放在正确的部分吗? 你有在php.ini中创建重复的目录吗? 记得把新的设置加到LocalSettings.php的最下面(而不是最上面!)
- 如果你有创建 .htaccess, 请确定AllowOverrides打开了吗? 可以问问你的主机商.
有个没提到的问题,怎么办?
如果你已经仔细研究了上面的常见问题并且还是找不到答案的话,请尝试以下方法:
- 在此网站上查看other sources of help。
- 搜索此网站的其他内容。
- 搜索互联网。
- 深挖源码.
參見 section below 了解如何謝開法者以及其他有此方面知識的使用者。
运气不好,没有得到帮助咋办?
- 在Project:Support_desk上提问。
- 写邮件给mediawiki-l邮件列表 (也可以先搜索一下文件存档)。
- 在我们的IRC频道(Freenode网络,#mediawiki频道)里直接向开发者提问。