MediaWikiをWindowsに入れる場合の制限について。
Linux環境で、MediaWikiを短いURLで運用するには、
- http://www.mediawiki.org/wiki/Manual:Short_URL のAlias設定
- http://meta.wikimedia.org/wiki/Using_a_very_short_URL のBの設定
を参考に、
Alias /wiki /path/to/wikidir
<Directory /path/to/wikidir>
Options FollowSymLinks
Order allow,deny
Allow from all
RewriteBase /wiki # ←これ大事。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?title=$1 [PT,L,QSA]
</Directory>でうまくいきました。
が、この設定はWindowsでは使えません。
コロン(:)をドライブレターで使うので禁止されているらしく、Alias(per-directoryリライト)の処理が行われずに403 Forbidden が帰ってきてしまいます。
- http://meta.wikimedia.org/wiki/Talk:Using_a_very_short_URL#Colon_issue_with_Very_Short_URLs_on_Windows
- http://smart-pad.blogspot.com/2007/01/colon-causes-apache-403-error-on.html
- http://www.apacheweek.com/issues/03-09-26 一番上のパラグラフ。
公式サイトにはGo Linux!とか書いてありますが、、ドキュメントルートに直接 MediaWikiのディレクトリを入れることでこの問題を回避できました。
Alias/Directoryディレクティブを使うとコロンが使えなくなるので、VirtualHost直下に以下を記述しました。
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^/_wiki/(.+)$ /_wiki/index.php?title=$1 [PT,L,QSA]
RewriteRule ^/_wiki/*$ /_wiki/index.php [PT,L,QSA]恐らくRewriteBaseを指定していないせいで、%{REQUEST_FILE}が-fにマッチしなくなるので、苦し紛れに%{DOCUMENT_ROOT}%{REQUEST_URI}にしたらうまくいきました。
です。
ちなみに、mod_rewriteの詳細なログを見るには、
RewriteLog logs/rewrite.log
RewriteLogLevel 9とします。