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
とします。