Manual:Short URL/wiki/Page title -- Apache rewrite--root access/ja
[edit] Apache rewrite
エイリアス方式を適用できない場合 (例えば、PHP を CGI として使用している場合) には、Apache mod_rewrite 規則を代わりに利用できます。 mod_rewrite は、ある URL へのリクエストを他の URL に置換することを可能にする Apache モジュールです。 mod_rewrite は相当に強力、かつ相当に複雑ですが、短い URL を実現するには単純な規則だけで済みます。 mod_rewrite の完全なマニュアルは ここ を参照してください。
Apache が Rewrite モジュールをロードしていることを確認してください。 以下の行が httpd.conf に追加またはコメント解除されている必要があります:
LoadModule rewrite_module modules/mod_rewrite.so
httpd.conf の変更後には、Apache を再起動して更新を適用する必要があるでしょう。
Apache 2 の場合は、さらに AcceptPathInfo を有効にする必要があるでしょう。 この設定は、標準的な Apache および PHP の導入パッケージでは、初期状態でオンになっていますが、導入システムのベンダやパッケージによっては、無効になっているかもしれません。
| 1. | まず最初に、MediaWiki が正しい URL 形式 "/wiki/記事名" を生成するように設定されている必要があります。 LocalSettings.php に以下の設定を追加または編集してください。 もし別のパスを使用したい場合は、/wiki を他の接頭辞に変更してください。 "/記事名" の URL 形式を使用すると、問題が発生する場合があります。
$wgArticlePath = "/wiki/$1"; |
| 2. | rewrite ルールモジュールがインストールされ、使用可能になっていることを確認します。 これは以下に示す行が、httpd.conf のそれぞれ適切な箇所に (その他のたくさんのモジュール設定行にまぎれて) 記述されているかを調べることで確認できます。 これらの行が記述されていなければ、この方式は動作しません。
# This one is only required if mod_rewrite is built as a DSO instead of # compiled into Apache. LoadModule rewrite_module libexec/apache/mod_rewrite.so AddModule mod_rewrite.c |
| 3. | mod_rewrite が /wiki/記事名 を /w/index.php?title=記事名 にリライトするように設定します。 以下のリライト規則を Apache の httpd.conf に追加してください。 対象となる MediaWiki 導入環境が Apache バーチャルホスト内にある場合は、<VirtualHost> 節内に記述する必要があります。
(RewriteRule 中の PT オプションは 必ず記述する必要があります。 これは、Alias ディレクティブを同時使用する場合に相互運用するためです (Debien MediaWiki パッケージ等でこのような場合が生じます)。 左記の場合以外で PT を指定しても、性能上の影響がわずかにある他に、何の悪影響もありません。)
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d
RewriteRule ^/?wiki/(.*)$ /w/index.php?title=$1 [PT,L,QSA]
実際の設定では、 /w には対象システムの htdocs 中の MediaWiki 導入ディレクトリ名を記述します。 対象となる MediaWiki で異なるディレクトリ名を使用している場合は、適切に読み替えてください。 この記述は対象システムの LocalSettings.php に記述された以下の行と一致する必要があります。 $wgScriptPath = "/w"; |
- この調整方法は Redhat Linux システムの httpd-2.0.40-21 において、既知の問題があります。 詳細については 議論ページ を参照してください。
| 言語: | English • 日本語 |
|---|
