Mediawiki4Intranet

From Wiki4Intranet
Revision as of 11:19, 30 March 2011 by VitaliyFilippov (Talk | contribs) (Патчи)

This is a page snapshot, showing old (but not deleted) versions of images and templates.
Jump to: navigation, search

MediaWiki — популярная «вики»-система, написанная на PHP и изначально создававшаяся в качестве «движка» Википедии. Отличается отличной расширяемостью — существует более 1700 расширений к ней.

Mediawiki4Intranet — сборка MediaWiki, содержащая в себе довольно большой набор расширений, полезных для внутрикорпоративной среды и, что очень важно, исправленных и «подруженных» между собой — большая часть ошибок, возникающих при интеграции, исправлена.

Содержимое

Сборка состоит из:

  • Кода оригинальной MediaWiki.
  • Установленных расширений.
  • Набора патчей.
  • Нескольких готовых конфигураций для простого создания LocalSettings.php.

Лицензия распространения большинства этого добра: GPLv2, как и у самой MediaWiki. /* Надеемся, что тивоизация нам всё-таки не грозит :) */

MediaWiki

Код MediaWiki берётся из SVN Wikimedia.

Версия Mediawiki4Intranet может отставать от стабильной, ибо различия между версиями MediaWiki не так уж и велики, а вот патчи менять приходится.

Версия MediaWiki, лежащая в основе сборки: 1.16.2 (до недавнего времени 1.14.1).

Патчи

Патчи содержат в себе изменения в код самой MediaWiki, а также небольшие изменения в расширениях, ради которых не хочется поддерживать отдельную версию этих расширений.

В MediaWiki4Intranet патчи хранятся в Feature Branches, то есть, в Mercurial-репозитории есть ветка «mediawiki-x.xx» (например, mediawiki-1.16), содержащая оригинальный код MediaWiki (плюс расширения, в которые изменения вносятся только патчами), по ветке на каждый патч, и ветка «all», содержащая все патчи, объединённые вместе. Для удобства объединений используется расширение Mercurial pbranch.

Какие плюсы это даёт:

  • Патчи не смешиваются, поэтому поддерживается высокий порядок — можно взять отдельный патч и отправить в upstream или, например, удалить.
  • Если патчи экспортировать в Unified diff-формате, между ними гарантированно не возникнет конфликтов, так как ещё на стадии объединения конфликты либо устраняются, либо вносится зависимость между патчами.

А единственный минус — высокая сложность графа ветвлений в Mercurial-репозитории.

Ветки отдельных патчей отпочкованы от оригинальной, и все изменения, вносимые этими патчами, просто фиксируются в соответствующие ветки. Обновления кода MediaWiki и расширений коммитятся в «оригинальную» ветку и merge’атся в ветки патчей, а затем и в ветку «all».

Далее ко всему этому безобразию, тоже отдельной веткой (mw4i-ext), добавляются SVN-репозиторий, содержащий собственные и сильно доработанные расширения, инструменты и конфигурационные файлы; после чего ветки all и mw4i-ext объединяются в «установочную» ветку mw4install.

Всего: 35 патчей.

Исправления багов

То есть патчи, исправляющие какие-либо ошибки. Всего: 17.

Аббр. Дата добавления Имя Описание патча
CEB 2010-02-03 categorytree-empty-bullets Патч расширения CategoryTree, чтобы оно не предлагало разворачивать пустые на самом деле категории.
CRNR 2011-03-28 cite-refsnoreferences Патч расширения Cite + в код MediaWiki, в большей части случаев исправляющий ошибку «Ошибка цитирования: для несуществующего тега <ref> не найдено тега <references />», некорректно возникающую при использовании расширений, которые сами где-нибудь используют парсер без сброса состояния.
DCS 2009-11-24 debug-categorized-specialrecentchanges Исправление выбора по категориям в «Свежих правках».
DNL 2009-08-12 discussion-newsection-links Ссылки на несуществующие страницы обсуждений сделаны по умолчанию ссылками на добавление секции.
DCLD 2009-11-11 dont-call-linkholders-__destruct Исправление некорректного явного вызова деструктора mLinkHolders в парсере.
DSSUC 2010-03-26 dont-suppress-same-user-conflicts Не игнорировать конфликты редактирования, произошедшие из-под одного юзера.
FL 2010-12-29 fix-l10n Исправление сообщения noarticletext в русском языке, добавление формата даты «YYYY-MM-DD HH:MM:SS» без дурацкого «T» между ними.
FPH 2010-12-14 fix-pdfhandler Патч расширения PdfHandler, убрано экранирование $wgPdfProcessor'а, ссылки на PDF-файл с его страниц теперь ведут на саму страницу.
GS 2009-11-19 gdalwaysresample-setting Настройка $wgGDAlwaysResample GD, если true, то миниатюры gif’ок получаются более качественными (они всегда уменьшаются с интерполяцией).
NSF 2010-06-25 no-session-fail Ликвидация лишней попытки сохранения и «ошибок потери данных сессии» при переходе на форму редактирования статьи с передачей текста в окно редактирования.
USDMS 2009-06-03 unauth-save-display-modified-source Показ изменённого, а не оригинального текста статьи при запрещённой попытке сохранения. Нужен, чтобы пользователь не потерял свои изменения при нажатии «Сохранить», если сохранять ему на самом деле запрещено.
UALE 2009-12-21 upload-autofill-lowercase-extensions Автоматическая смена регистра расширения загружаемого файла на нижний. Плюс настройка $wgMaxFilenameLength максимальной длины имени файла в списках файлов с миниатюрами — в оригинале забито гвоздями значение 20, что очень мало, и из-за чего имена файлов часто обрезаются.
WDCS 2009-12-14 wfmsg-dont-clear-stripstate По умолчанию не очищать $parser->mStripState при дополнительных вызовах parse(). Исправляет некоторое количество ошибок с непонятными длинными иероглифическими маркерами «--……..uniq--» в тексте статьи на месте каких-либо данных. На самом деле причина ошибки более глубока: парсер MediaWiki нереентерабелен, авторы об этом знают и, возможно, когда-нибудь исправят.
EHC 2009-09-11 bug53818-empty-heading-crutch Ликвидация пустых заголовков (строк вида ====) из текста статьи, вместо того, чтобы принимать большую часть = за маркеры заголовка, а два внутренних = — за текст заголовка.
FFP3 2009-08-12 fixes-for-php-5.3.0 Исправления предупреждений (warnings) под PHP 5.3 и выше, в некоторых файлах MediaWiki и расширении Interwiki.

Доработки

То есть патчи, добавляющие какой-либо новый функционал. Всего: 17.

Аббр. Дата добавления Имя Описание патча
AH 2010-07-23 add-hooks Добавление хуков. Требуется для расширений HttpAuth (для авторизации методом HTTP Basic) и Wikilog (для группировки свежих правок комментариев в блогах по имени поста на странице «улучшенных» свежих правок).
ALT 2009-11-20 anchor-link-tocnumbers Поддержка автоматической простановки номеров секций в ссылках на секции текущей страницы. То есть в ссылки вида «[[#РазделРаздел]]» будет автоматически добавлен номер секции («2. Раздел»).
CSL 2010-03-25 category-subcatlist Патч расширения CategoryTree. Новый метод группировки страниц в категориях — не по первой букве имени, а по другим категориям, в которых они также перечислены. Чтобы включить этот метод, на страницу категории нужно добавить магическое слово __CATEGORYSUBCATLIST__.
DBT 2010-05-21 detailed-badtitle Детализация сообщений об ошибках недопустимого имени страницы.
DSAH 2009-10-23 detect-script-allow-html Разрешение изменения списка тегов, запрещённых в тексте загруженных файлов — настройка $wgForbiddenTagsInUploads.
DAT 2009-08-07 dot-after-tocnumber Настройка $wgDotAfterTocnumber, если true, то после номеров разделов в оглавлении ставится точка.
EP 2011-02-18 env-proxy Поддержка настроек HTTP прокси, заданных в стандартных переменных окружения http_proxy, http_no_proxy, при загрузке изображений по URL.
FVS 2011-02-11 fix-vector-skin Небольшая доработка и исправление скина Vector — возвращение возможности поместить поле поиска в левую панель через MediaWiki:Sidebar (что за тупость — удалять возможность). Плюс увеличение ширины верхнего поля поиска.
HE 2010-04-21 html-emails Часть расширения EnotifDiff. Поддержка отправки почты об изменениях и подтверждении e-mail адреса в формате HTML, а не в виде чистого текста.
ITF 2011-02-11 imagethumb-transform-flags Передавать данные о том, откуда вызывается создание миниатюры файла. Нужно для FlvHandler’а, чтобы не вставлять код видеоплеера в галереи файлов и в миниатюры файлов в истории ревизий.
IEIC 2009-05-13 import-export-images-and-conflicts Очень сильно улучшенный импорт/экспорт страниц MediaWiki. Отправлен в Wikimedia Bug 22881.
IAR 2011-02-25 intraacl-rights Часть расширения IntraACL. Проверки прав доступа к страницам во всём коде MediaWiki. Собственно это и обеспечивает защиту.
LSA 2011-03-23 lcstore-accel Поддержка кэширования локализации (LocalisationCache) в PHP ускорителе типа XCache. Странно, что этого нет в оригинале.
LPWC 2011-03-23 longpagewarning-config Поддержка настройки лимита размера статьи, по истечении которого показывается предупреждение MediaWiki:Longpagewarning. Баг такой у разработчиков mediawiki стоит, но решение они для него предложили очень странное — убрали нафиг проверку и разрешили делать эту проверку на уровне функций парсера. Глупость.
PDD 2011-02-11
← 2010-07-26
parser-debug-doblocklevels Разрешать включать <center>...</center> и <blockquote>...</blockquote> внутрь абзаца. Две даты добавления — потому что патч, по сути, имел две версии — первая добавляла тупой хак, местами ломавший тесты, а вторая включает почти полностью переписанный корректный метод doBlockLevels().
REF 2010-12-14 rearrange-editform Перемещение списков использованных в статье шаблонов и скрытых категорий на странице редактирования под форму редактирования, то есть, за пределы элемента <form>. Что необходимо для того, чтобы текст WikEd'овского AJAX-предпросмотра, то есть HTML-текст статьи, не включался в форму, потому что он сам может включать в себя формы, и тогда их содержимое некорректным образом попадает в форму редактирования, что потенциально приводит к неприятным багам. Плюс настройка $wgNoCopyrightWarnings для отключения предупреждений о копирайте (MediaWiki:Copyrightwarning, MediaWiki:Copyrightwarning2).
SHL 2009-06-18 shift-included-templates-heading-levels «Сдвиг» уровня заголовков статьи при её включении в подзаголовок. То есть если она включается под заголовком уровня N, то её заголовки 1-го уровня станут (1+N)-ого уровня, 2-го — (2+N), и т. п.
SNH 2009-05-13 signature-nohyphen Вставка подписей нажатием кнопки без двух лидирующих минусов «--». Плюс <m>...</m> вместо <math>...</math> на кнопке вставки TeX-формул (обрабатывается расширением MarkupBabel).
TFN 2009-05-13 translit-upload-filenames Автоматическое транслитерирование физических имён файлов (то есть имён файлов на диске) с кириллицы на латиницу под Windows.
TS 2010-10-15 transclude-sections Поддержка включений секций страниц с помощью синтаксиса вида {{:Статья#Секция}}.

Устаревшие патчи

Под устаревшими понимаются патчи, более не нужные в связи с обновлением лежащего в основе кода. По сути, это означает, что данный патч либо исправлял какой-то баг, который исправили уже и сами авторы, либо был сам принят в состав MediaWiki (таких пока что, правда, нет), либо был переименован.

Аббр. Дата добавления Имя Описание патча
CRDP 2010-01-12 cite-reenterability-for-different-parser-objects Патч расширения Cite, направленный на его реентерабельность.
FCRW 2009-05-13 fix-cannot-redeclare-wfspecialupload Исправление ошибки «Fatal error: Cannot redeclare wfspecialupload()» при загрузке изображения без авторизации. Плюс поддержка HTTP прокси, заданной в стандартной переменной окружения http_proxy, при загрузке изображений по ссылке.
HAR 2010-04-27 haloacl-rights /* переименован в intraacl-rights */ Часть расширения HaloACL. Проверки прав доступа к страницам во всём коде MediaWiki. Собственно это и обеспечивает защиту.
IGTT 2009-09-11 imagegallery-tell-transform, imagepage-tell-transform /* патчи объединены в imagethumb-transform-flags */ Передавать данные о том, откуда вызывается создание миниатюры файла. Нужно для FlvHandler’а, чтобы не вставлять код видеоплеера в галереи файлов и в миниатюры файлов в истории ревизий.
TMF4 2009-11-24 trunk-mediafunctions-for-1.14 Патч trunk-версии расширения MediaFunctions, позволяющий ей работать в MediaWiki 1.14.1.

Расширения

Для большинство расширений, присутствующих в SVN Wikimedia, используется их версия, соответствующия версии MediaWiki — например, для версии 1.14.1 расширения берутся из tags/REL1_14_1/extensions. Однако некоторые расширения в 1.14.1 имеют различные неприятные баги, или их там вообще ещё нет, и тогда берётся их trunk-версия (то есть самая новая) из trunk/extensions, возможно, как-то допиливается, например, с помощью патчей, и включается в сборку.

Есть и расширения, которые вообще не попали в SVN, и у которых нет даже своего репозитория с кодом, а есть только где-то выложенные файлики, или даже просто PHP-код на вики-страницах. Такие сохраняются в нашем локальном SVN, там же дорабатываются, и включаются в сборку оттуда. Вообще говоря, у нас есть «супер-система» автоматического объединения кода и патчей из нескольких источников на основе Mercurial и pbranch, но это немного другая история.

Всего: 58.

Неизменённые

То есть просто установленные. Всего: 15.

AllowGetParamsInWikilinks
Разрешение использования URL-параметров (?key=value) во внутренних вики-ссылках.
CharInsert
Поддержка вставки шаблонов <charinsert> для MediaWiki:Edittools. См. также UserMessage.
DeleteBatch
Удаление множества страниц сразу со спецстраницы Служебная:DeleteBatch.
FullLocalImage
Добавление функций {{fullimage:ФАЙЛ}} и {{localimage:ФАЙЛ}}, возвращающих путь хранения файла на сервере (полный в первом случае и относительный во втором).
Google Analytics (trunk)
Гугловский счётчик. Можно подключать на виках, установленных в интернете.
PagedTiffHandler (trunk)
Поддержка TIFF-картинок.
ParserFunctions
Функции парсера типа {{#if:}}, {{#ifeq:}} и т. п. Справка тут.
PreferencesExtension
Расширение, используемое другими расширениями для добавления пользовательских настроек. Нужно в версиях MediaWiki < 1.16.
Renameuser (trunk)
Переименование пользователя с корректным обновлением ссылок на него в БД.
SimpleForms
Поддержка добавления на страницы формочек с целью простого создания новых страниц по шаблону.
StringFunctions
Строковые функции парсера типа {{#sub:}}. В новых версиях объединены с ParserFunctions, но у нас 1.14.1, а там ещё нет.
SyntaxHighlight_GeSHi
Поддержка подсветки синтаксиса в большинстве распространённых языков программирования с помощью GeSHi. Используется тег <source>. И будет использоваться всегда, несмотря на то, что в новых версиях расширения его заменяют <syntaxhighlight> (маразм).
UserMerge (trunk)
Объединение и удаление учётных записей пользователей с корректным изменением ссылок в БД.
WhoIsWatching
Ответ на вопрос «кто наблюдает за данной страницей?» со страницы Служебная:WhoIsWatching.
WikiCategoryTagCloud
Вставка облаков тегов на страницы. Тегами считаются категории.

Отлаженные

То есть установленные и отлаженные или back-портированные. Всего: 15.

Cite
Поддержка сносок на вики-страницах (теги <ref> и <references>). Внесены изменения патчем.
MediaFunctions (trunk)
Поддержка функций для получения информации о загруженных файлах. Внесены изменения патчем для работы trunk’овой версии в 1.14.1.
PdfHandler (trunk)
Медиаобработчик для PDF-файлов. То есть, поддержка загрузки PDF’ок, их постраничного просмотра и вставки страниц PDF как изображений. Иногда может создавать проблемы, ибо ghostscript обрабатывает некоторые PDF’ки с очень большим трудом, потреблением дискового пространства на /tmp и процессорного времени. Внесены изменения патчем.
MultiCategorySearch
Спецстраница Служебная:MultiCategorySearch для поиска страниц, включённых в несколько категорий сразу.
SimpleTable
Поддержка простого (вменяемого) синтаксиса для вставки таблиц — тега <tab>.
Drafts
Поддержка сохранения черновиков в процессе редактирования страниц, плюс авто-сохранение каждую минуту, чтобы не потерять свои труды, если браузер вдруг накроется.
CategoryTree
AJAX-раскрываемые деревья категорий на спецстранице и страницах самих категорий. Внесены изменения патчами для поддержки альтернативной группировки страниц в категории и удаления плюсиков ([+]) у категорий, не содержащих подкатегорий, в деревьях.
AnyWikiDraw
Поддержка вставки рисованных с помощью Java-апплета картинок на вики-страницы. Увы, нетривиальна в эксплуатации, ибо апплет.
OpenID
Поддержка входа в вики по офигически глючной, но самой распространённой технологии единого входа — OpenID.
Interwiki (trunk)
Междувиковые ссылки, включения, редактирование таблиц интервики. Внесены изменения патчем.
reCAPTCHA
Реализация популярной CAPTCHA («Публичного Полностью Автоматического Теста Тьюринга для Различения Компьютера и Человека»), короче говоря, антиспам для вики-систем, установленных в интернете. У нас, кстати, по умолчанию только что зарегистрированные пользователи не могут создавать новые страницы.
SpecialForm
Ещё одно расширение для создания страниц из форм по шаблонам. Вероятно, от него вскоре полностью откажемся в пользу SimpleForms.
SVNIntegration
Не используется и является хорошей «дырой» в subversion, но позволяет вставлять на страницы файлы из Subversion или информацию о них.
PlantUML
Рисование UML-диаграмм с помощью PlantUML.
Workflow
Небольшое расширения для вставки «переключаемых» состояний страниц (можно назвать «информерами»), реализованных через категории.

Доработанные

То есть установленные и сильно доработанные. Всего: 7.

Calendar
Расширение-календарь событий для MediaWiki, на котором каждое событие, либо каждый день с событиями, хранится на вики-странице.
FlvHandler
Поддержка вставки Flash-видеоплееров на страницы с использованием обычного синтаксиса [[Файл:Видео.mp4]]. Поддерживаются видеокодеки FLV+MP3 или H.264+AAC в контейнерах FLV или MP4.
HaloACL, HaloACL (MediaWiki)
Единственное расширение MediaWiki, реализующее работающие права доступа (позволяющее защитить часть страниц от просмотра). 100%-ной гарантии всё равно никогда нет, потому что MediaWiki не создавалась в расчёте на это, и многие её расширения лазают в базу как попало и, соответственно, могут вытащить оттуда любую информацию. Однако в пределах сборки Mediawiki4Intranet HaloACL работает. Тем не менее, качество кода HaloACL оставляет желать сильно лучшего — например, интерфейс зачем-то начудили на Yahoo UI, из-за чего редактирование прав в основном тормозит и тупит, а не работает. Имеется и множество других багов, из-за которых возникают сомнения в том, что авторы его сами используют в том виде, в котором он лежит на SourceForge. У нас часть этих багов исправлена, а права, к счастью, сами задаются вики-страницами, поэтому никто не мешает и создавать их plaintext’ом. В будущем планируется переписать интерфейс HaloACL на «Веб 1.0», немодный, зато очень надёжный :)
MagicNumberedHeadings
Магические слова __NUMBEREDHEADINGS__ и __NONUMBEREDHEADINGS__, принудительно включающие/выключащие нумерацию заголовков на страницах вне зависимости от пользовательских настроек. В оригинальной версии есть только включающее слово.
SphinxSearch
Замена стандартного вики-поиска поиском на основе движка Sphinx. Также см. инструкции по установке: SphinxSearch (Mediawiki4Intranet)#Установка.
SVGEdit
Поддержка браузерного JavaScript-редактора SVG-Edit для редактирования SVG’шек в MediaWiki. Имеет несколько проблем, в частности, открытие не всегда работает по причине какой-то проблемы синхронизации (race condition), которую ни автор, ни мы выловить пока не смогли.
Wikilog
Блоги, форумы, иерархические комментарии, календарик записей на основе MediaWiki, импорт блогов из экспортных файлов blogger.com. Заметка по поводу качества кода: авторы (в основном Juliano F. Ravasi), по-моему, перемудрили с объектной ориентированностью, всё это можно было написать раза в 2 компактнее.

Созданные

То есть созданные в рамках сборки. Всего: 21.

BatchEditor
Расширение для массового редактирования множества страниц с помощью замен строк или регулярных выражений.
BugzillaBuglist
Расширение для включения списков багов из Bugzilla из-под специально заданного пользователя (соответственно, со специально заданными правами). В виде обычных таблиц.
CategoryTemplate
Расширение для быстрого создания страниц в категории по шаблону.
CharInsertList
Расширение, похожее на CharInsert, полезное исключительно для использования с «EditTools», и позволяющее вставлять выпадающие списки для вставки шаблонов, аналогичных CharInsert’овским.
CustisScripts
«композитное» пока-что не разделённое расширение. Включает в себя: WikEd, русскоязычный Викификатор, «автопредпросмотр» AKA Live Preview (показывает в отдельном окне браузера автоматически обновляемый в процессе редактирования предварительный просмотр страницы), плюс несколько изменений CSS стилей.
DocExport
EnotifDiff
отправка почты об изменениях наблюдаемых страниц в формате HTML, опциональное включение в них diff’ов (текстов различий), отправка писем о подтверждении e-mail адресов в формате HTML.
GlobalAuth
поддержка самопального веб-протокола Single Sign-On в MediaWiki (как клиентской, так и серверной стороны).
HttpAuth
поддержка входа в Wiki с использованием HTTP Basic авторизации. Полезно, например, для доступа к RSS/Atom лентам в закрытых с помощью HaloACL вики-системах из читалок.
ListFeed
генерация RSS-лент из вики-списков (* или #).
MarkupBabel
ещё одно «композитное» расширение, включающее поддержку LaTeX-формул, Graphviz-графов, Gnuplot-графиков, процентных диаграмм, UML-схем через UMLGraph.
MediawikiQuizzer
MMHandler
медиаобработчик для вставки Flash-плагина просмотра майндмапов («интеллектуальных карт» или «диаграмм связей») формата *.mm (FreeMind, FreePlane) с помощью обычного синтаксиса вставки изображений [[Файл:Mindmap.mm]].
Polls
S5SlideShow (MWSlideology)
SubPageList2
SiteExport
SWFUpload
UserMagic
UserMessage
WikiBookmarks

Установка

Чтобы установить MediaWiki4Intranet, нужно:

  • Cклонировать mercurial-репозиторий из Google Code и обновиться до ветки mw4install
  • В директории для установки создать папку images, читаемую и записываемую веб-сервером.
  • Создать для вики MySQL базу данных и пользователя с полным доступом к ней.
  • Запустить вики-установщик из папки config, то есть, зайти на http://server/wiki/config/, ответить на вопросы, исправить недоразумения (если таковые возникнут), выбрать базу MySQL, InnoDB, 4.1/5.0 utf8 binary. Установщик создаст пустую БД и конфиг.
  • Удалить конфиг, сгенерированный установщиком — в нём куча опций, которые все уже прописаны в правильные значения в конфигах MediaWiki4Intranet.
  • Создать минимальный конфиг MediaWiki4Intranet (LocalSettings.php):
<?php
require_once 'custisinstall/ServerSettings.php'; # это под UNIX, либо BaseSettings.php для винды
$wgDBname = 'wiki'; # имя БД
$wgDBuser = ''; # логин и пароль с полным доступом к этой БД
$wgDBpassword = '';
$wgDBadminuser = $wgDBuser;
$wgDBadminpassword = $wgDBpassword;
$wgScriptPath = '/wiki';
  • Запустить php maintenance/update.php из директории установки вики.

Короткие URL

Под «короткими URL» в вики понимаются адреса статей без index.php/ и тем более без index.php?title=, например, такой URL — «короткий»: http://wiki.4intra.net/Mediawiki4Intranet. Настраиваются с помощью конфигурации в LocalSettings.php:

$wgUsePathInfo = true;
$wgArticlePath = '/$1';

И дополнительно — директив mod_rewrite:

RewriteCond %{THE_REQUEST} ^\S+\s*/*index.php/
RewriteRule ^index.php/(.*)$ /$1 [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?title=$1 [L,B,QSA]

Всё относительно очевидно, но есть пара нюансов:

  • В последней строчке обязательно использовать именно index.php?title=$1, а не index.php/$1, так как во втором случае при использовании [B] подстраницы (страницы с / в названии) становятся недоступны.
  • Флаг [B] в последней строчке важен. Ибо без [B] mod_rewrite при переписи URL разэкранирует и не экранирует обратно спецсимволы (все, кроме латинских букв и цифр), из-за чего статьи с названиями, содержащими процент (%), становятся недоступны, потому что % в URL-кодировке — спецсимвол, и обязательно должен быть заменён на %25.
  • Флаг [QSA] тоже нужен, ибо без него к ?title=$1 не дописываются остальные параметры URL.
  • Первые две строчки нужны, чтобы с адресов, содержащих в себе index.php/, перенаправить пользователя на «короткие» — это убирает дублирование страниц, которое не любят поисковики.

Антиспам для публичных Wiki

В публичных Wiki имеют свойство заводиться спамеры, потому что можно легко зарегистрироваться и создать статью.

Поэтому желательно включить расширение reCAPTCHA, распространяемое вместе с MediaWiki4Intranet, получить ключи для своего домена на http://recaptcha.net/api/getkey, и прописать это всё в LocalSettings.php:

require_once('extensions/recaptcha/ReCaptcha.php');
// Sign up for these at http://recaptcha.net/api/getkey
$recaptcha_public_key = '';
$recaptcha_private_key = '';

У спамеров есть ещё одно свойство — они регистрируются и сразу начинают создавать статьи. Поэтому, можно запретить создавать статьи после регистрации на какой-то период времени (в тяжёлых случаях можно, например, на 4 суток). Для этого нужно прописать следующие директивы в LocalSettings.php:

// Время, в течение которого запрещено создавать статьи (например, 4 суток * 86400 секунд в сутках)
$wgAutoConfirmAge = 86400 * 4;
 
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['delete'] = false;
$wgGroupPermissions['*']['undelete'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createtalk'] = false;
$wgGroupPermissions['user']['createpage'] = false;
$wgGroupPermissions['user']['createtalk'] = false;
$wgGroupPermissions['autoconfirmed']['createpage'] = true;
$wgGroupPermissions['autoconfirmed']['createtalk'] = true;
$wgGroupPermissions['sysop']['createpage'] = true;
$wgGroupPermissions['sysop']['createtalk'] = true;
$wgGroupPermissions['bureaucrat']['createpage'] = true;
$wgGroupPermissions['bureaucrat']['createtalk'] = true;