Manual:Short URL/Apache/ja

ここに記している手順は、Apacheで短いURLを設定するのに役立ちます. LiteSpeed WebサーバーはApacheと互換性があり、比較的同じように設定できます. 短いURLとは何なのかや、他のサーバーの設定手順については、を参照してください. どこかのウェブホスティングサービスを使ってていてウェブサーバの種類がわからないときは、恐らくApacheを使用していると考えて間違いないでしょう.

準備
設定を始める前に、仮想的な「短いURL」のパスを決めておく必要があります.

このマニュアルでは、以下の推奨内容になっていることを想定しています. あなたの決めたパスがこれと異なっていた場合は、忘れず値を読み替えるようにしてください.


 * MediaWikiが置かれたディレクトリ:
 * 希望する短いURLの形式:

以後の作業は、自動化されたウィザードが行う処理に含まれています (MediaWiki 1.17以上):


 * shorturls.redwerks.org

すばやく設定作業をしたい場合や案内の内容がよく分からない場合は、まずはこのウィザードツールを試してみてください. なお、ファイアウォールがある環境や非公開のウィキの場合、このツールは使えないので注意してください. 非公開ウィキでも、 を に設定して一時的にウィキを公開すればツールを試すことができます. 作業を終えたら、忘れずに を に戻しておいてください.

このツールを使わないのでなければ、以下の指示にしたがって作業を進めてください.

編集すべきファイルを知る
Apacheで短いURLを設定するには、Apacheの設定ファイルを編集することをお勧めします. これには、サーバー設定へのアクセス権が必要です. 共有ホストを使っている場合、その権限はないことが多いでしょう. そのときは代わりに ファイルを使ってください. ファイルを使うやり方は効率が悪く、複数のドメインを使った複雑な設定をするときに必要となる設定をすべてを行うことはできません. しかし、ほとんどの短いURLではこれで十分です. LiteSpeedユーザーは を使うのがいいでしょう.

以下に記す2つの節のうちどちらか一方の手順にしたがって設定を進めてください. どちらを使うべきかは、あなたがrootアクセス権を持っているのか、そうではなく代わりに を使う必要があるのかに依存します.

Apache設定ファイルの場所を知る（rootアクセス権がある場合）
基幹設定を編集するためのファイルはさまざまな場所にある可能性があり、そのどれか一つが本当に編集すべきファイルになるでしょう.

ほとんどのLinuxディストリビューションでは、 と のフォルダにApacheの設定ファイルがあります. 編集すべき設定ファイルは、 の中にあってあなたのウィキに関する設定が書かれている設定ファイルです. まだウィキに関する設定は行っておらず、初期状態の をウィキのディレクトリとして使っていた場合、 を編集して設定することができます.

で設定上書きを有効化することを忘れないでください. 初期状態のUbuntu 12.04とUbuntu 12.10では無効になっています.

ディストリビューションにこれらのディレクトリがない場合は、Apache設定ファイルを直接編集する必要があります. このファイルは にあるはずです. 以前は という別の名前であったことに注意してください. が存在し、 が存在しなかったときは、 が編集するべきファイルになります.

Apacheの設定ファイルがこれらいずれの場所にもないときは、Apacheのインストールに使用したシステムのマニュアルを参照し、そのファイルの場所を探してください.

Apacheの設定ファイルにアクセスできない共有ホストを使っている場合、代わりに.htaccessファイルを使用する必要があるでしょう.

Apache設定ファイルには、あなたのウィキに関する設定が書かれたVirtualHostブロックがあるでしょう. それがあるなら、ここが書き換えルールを設定する場所になります. VirtualHostを使用している場合、RewriteRule設定をグローバル設定として書かないでください. RewriteRule設定はVirtualHostに継承されないからです.

上記のようにApacheの設定を行ったら、Apacheを再起動して新たな設定を反映させる必要があります.


 * PleskやcPanelを使っている場合、サーバーを再起動する方法が必要です.
 * コマンドラインを使う場合、通常は 、 、 のようなコマンドを、最新のFedoraであれば を実行することになるでしょう. これらのコマンドはrootユーザとして実行する必要があるため、通常は を前につけて実行することになります.

Where to put .htaccess
ファイルを使う場合、このファイルを編集します. 存在しなければ新たに作成してください. スクリプトのパスとサイト上の仮想パスの両方を知っておく必要があります. 通常、ウィキがあるサイトのトップディレクトリを指しますが、以下に示すいくつかの例を見てみることにしましょう.

メインドメインからウィキのメインページ（例： http://example.org/ http://example.org/wiki/Main_Page ）へのリダイレクトを設定する場合、常に最上位のディレクトリに .htaccess ファイルを置く必要があることに注意してください. 例え他のディレクトリが深い階層にあったとしてもです.

書き換えルールの設定
この節の残りの部分は、Apacheの設定書式を一読してからの方が理解しやすいでしょう. ここに記す概略は完全なApacheマニュアルの代わりにはなりません.

ディレクティブはRewriteRuleを適用する対象となる条件を規定します. RewriteRuleの前に一つ以上のRewriteCondディレクティブを書くことができ、URLに書き換えルールを適用するにはRewriteRuleの前にあるすべてのRewriteCondの判定結果が真となる必要があります. 以下の例では、 に などのサーバー変数を参照する書式を使って条件を記しています. 複数の がある場合、上記の例では （条件文が通常ファイルであった場合に真）と （条件文がディレクトリであった場合に真）を使い、これらの前に否定文字  を使っています.

ディレクティブは ファイルからもいずれの ファイルからも呼び出すことができます. しかし、書き換えルールを.htaccess ファイル内に記した場合、ルールのパターンは暗黙のうちにディレクトリごとの設定の影響を受けます. なぜならルールは .htaccess があるディレクトリからの相対的なルールとなるからです. ファイル内に記した場合は相対的なものとはならず、元のURL全体に対するルールとなります. ファイルに記す場合、スラッシュ で始まるパターンを書いてはいけません. なぜならURLの部分文字列は で始まることはないからです. 以下の例では、書き換え処理を即座に停止し、これ以上ルールは適用しないことを意味する フラグを使っています.

設定ファイルの中で最初に記す必要のあるルールは、書き換えエンジンを有効化する指示です.

ここで次に必要となるのが、記事のパスをindex.phpを指す仮想パスに変えるルールです. と はあなたが考えているものに置き換えてください（もし違っていれば）.

短いURLとして、通常のURLではなくサイトのトップURLを使う場合、以下の設定を使う必要があるでしょう（ や などの既存ファイルやディレクトリが記事として見えてしまわないようにしています）.

Sometimes, the above example doesn't work. The following (you can't set this in a, you need root access for this!) might work instead:

Optionally, you can include a rule to show the Main Page on the path itself, to simplify navigation when people visit urls without a page title specified:

The end result should look something like this:

or, if you used the way with the "Alias" statement:

LocalSettings.php
We need to make the following configurations in :

If you get an "Internal error" page saying "Redirect loop detected!" after you finish configuration you may be using something other than mod_php. If so you need to explicitly turn on short urls using the following line in your LocalSettings.php:

If there is still an "internal error" check the log files of your server. Maybe you have to turn on  module.