MediaWiki

提供:Turgenev's Wiki
2023年11月24日 (金) 00:51時点におけるTurgenev (トーク | 投稿記録)による版 (Notion-MW)

Wikipediaやこのサイトで使用されている代表的なWikiシステムであるMediaWikiについて解説する。

初期設定

CSS/JS

Help:User style/ja - Meta とかにある通り、デフォルトではcssを直接ページ内に書いても有効にならない。wgAllowUserCssをtrueにして有効にするか、MediaWiki:Common.cssを直接編集するとよい。管理がしやすいので当サイトでは後者の方法を採用した。

当サイトでは使っていないがJSについても同じ(wgAllowUserJsとMediaWiki:Common.js)。

スキンに関するCSS

当サイトではVectorテーマを使用しているので、MediaWiki:Vector.cssの内容も適用される。さらにVector 2022を使っているのでMediaWiki:Vector-2022.cssの内容も適用される。

設定内容としては、ja.wikipedia.orgに合わせて文字サイズを0.875emから0.944emに変更している。

シェルアクセス

Manual:Maintenance scripts/Running the scripts - MediaWikiにあるように、シェルアクセスがないところで使っている場合は拡張機能でどうにかする。2つ書いてあるがMaintenanceShellのほうがいろいろと良さそう。MaintenanceShellは、有効にしたあと、Special:MaintenanceShellにアクセスする。

しかし、generateSitemapとかはまともに動かなかった。まあやはりというか、普通はシェルアクセスのあるところで使ったほうがいいっぽい。

API

nodeでやる。requestはdeprecatedになったのでaxiosを使う。

cookieを使うってことがどこにも書いてなくて難しかった。ここでようやく見つけた。

画像

Help:画像 - MediaWikiに詳しく書いてある。

MediaWikiにアップロードするのが原則だが、$wgAllowExternalImagesという変数を設定することで外部サイトの画像を直接掲載できる。このサイトは個人サイトであり、管理しやすい(普通のアップロードだとランダムなフォルダに入れられたりするし、移行が煩雑そう)のでこちらを使っている。

サイズ

style="max-width:100%; height:auto;"みたいなCSS(当サイトでは前述のCommon.cssに入れた)を使えば、外部サイトの画像でもサイズを変えられる。

500 internal server error

アップロードまではできたが、画像ファイルが(ftpで見てもちゃんとアップロードされているのに)500 internal server errorで見れない。

これはstarserverの性質かもしれないが、どうやらimages直下の.htaccessが悪いようで、これを消したら見れた。実際に悪さをしているのはOptions +FollowSymLinksだったっぽい。これをコメントアウトすると見れた。

URLを短くする

最初の設定だとURLにindex.php?title=のような見栄えのよくない文字列が入ってしまうが、Wikipediaのようにexample.com/wiki/タイトルのような形式にできる。Manual:短縮URL - MediaWikiに案内がある。そこに書いてある通り、URLに?が入っているのは見栄えだけでなくSEO上もあまりよくないとのこと。

注意点として、index.php?title=形式を短い形式に強制的にリダイレクトさせるわけではない(index.phpは単なる記事の閲覧以外にも使われるので、そのように設定するのは面倒そう)。ただ、この状態でも、記事間リンクは短いURLを使ってくれるようになる。あとはWikiSEO拡張(後述)を使うと検索エンジンにも短いURLが通知される。

このサイトはサーバーがApacheなので、Manual:Short URL/Apache - MediaWikiの通りにする。長々と説明が書いてあるが、普通に設定するならSimple instructionsのところだけ読めばよい。URLに設定したい場所(たとえばwiki)が既にMediaWikiのフォルダとして使われているとうまくいかない(このサイトの場合はmwなので大丈夫)ので、この記事の最初の方にある通りにMediaWikiのフォルダのほうを動かす。

テンプレート

MediaWikiにはテンプレートというものがあり、記事のパーツを引用して使いまわすことができる。このWikiでもWikipediaの「独自研究」などに倣ったメッセージボックスをいくつかテンプレートとして利用している。

例えば、まず以下のような汎用のMboxというテンプレートを作り(色も引数で指定できるのがポイント)、

<div style="border-left: 0.4rem solid #119922" ><div style="padding-left: 10px; padding-right: 10px;  border: 1px solid #222222; background-color:#FBFBFB; border-left: 0.4rem solid {{{1}}}" >{{{2}}}</div>
</div>
Template:Mbox

これを利用して下書きのテンプレートを作っている。

{{Mbox|#000022|このセクションの内容は未完成であり、今後の加筆が予定されています。}}
Template:Stub

SEO・OGP

まずはWikiSEOというextensionを同じように入れる。

OGP

このサイトではとりあえず大した設定はしておらず、$wgWikiSeoDefaultImage = "http://turgenev0.starfree.jp/mw/logo0.png";でロゴを設定し(相対パスでも表示はされるようだが、SNSで重要なOGPとは?SEOとの関係性や設定方法を解説 -webma-とかを見ると多分絶対パスのほうがよさそう)、各ページに{{#seo:|title={{FULLPAGENAME}} - Turgenev's Wiki}}と書いただけで、あとは何もしていない。先ほどの「URLを短くする」をやっておくと、そちらのURLが正規URLとして扱われる。

表示を確かめたいときはシェアデバッガー - Meta for Developersを使うとよい。

{{#seo:...}}でimageなどを一度設定してしまうと、後でimageを消してもその設定がそのまま残ってしまった(WikiSEOのwfLoadExtensionを外すと消えるが、付けるとまた復活する)。おそらくページなどを格納しているMySQLデータベースのどこかに前回の設定が残っているのであろう。ページを削除するとリセットできるがそれ以外の治し方は不明。

サイトマップ

generateSitemap.phpを使えばよい。しかし以前使っていたスターサーバーフリーではシェルアクセスがなくて使えなかったので自前で生成できるようにした(参考: フィルターされたNotionページによるMediaWiki

その他SEO

そこまでの必要性を感じないが、気が向いたらやるかも。

このセクションの内容は未完成であり、今後の加筆が予定されています。催促は管理者までお気軽にどうぞ。