作者: davi
日時: 2008/4/07(22:30)
みなさん  <  こん??は でび です

# TS的でない話題かもしれませんが、技術的に信頼できる人が
# 集っている適切な場所を他に知りませんので、お許し下さい。

共有サーバ(たぶんApache2.x)のドメインエイリアスの設定申請中です。

その後の.htaccessでの切り分け分岐に、どの環境変数を用いる
べきか、ちと混乱しています。

# 共有サーバなんでシェルは使えませんし…。

そんなわけで、Apacheの環境変数、ちと教えて下さい。

従来は、例えばhttp://www.example.netとhttp://www.example.jp
の2つのサーバで運用していたとします。

そして、新しくhttp://www.example.orgを立ち上げたとします。

従来のサイトの内、example.netの契約サーバを来月解約予定。

但しexample.netドメインそのものは維持し、example.jpに
ぶら下がるものとしてドメインエイリアスを申請中。

DNSはexample.netについてもexample.jpと同一のものを割り当てます。

んで、example.jpを置いているサーバに.htaccessを設置して、

1:example.netで要求された場合は、example.jpの中身は一切見せずに、
  そのまんまexample.orgへ向かってpermanentでRedirectしたい。
2:ipアドレスで要求された場合はexample.jpの中身を表示。
3:example.jpで要求された場合は、当然、example.jpの中身を表示。

こんなふうにしたいわけです。

なお、http://www.example.net、http://www.example.jp、
http://www.example.orgのいずれもサブドメインの運用はありません。

example.netのドメインを取得したレジストラが、バーチャルドメイン
とか振り替えサービスをやっていれば、それをそのまま利用すれば
良いのでしょうけれども、どうもそういう機能は無いようなので、
苦肉の策です。

DOCUMENT_PATHを使うと、たぶんDefineが帰ってくると思うんですね。
すると、この場合、

RewriteEngine On
RewriteCond %{???}
RewriteRule ^(.*) http://www.example.org/ [R=301,L]

を使うとして、???部分で切り分けに用いる環境変数には
HTTP_HOST、SERVER_NAMEのどちらかを使えば良いのでしょうか。

それともHOSTNAMEか、REQUEST_URIかなぁ・・・????と。

“クライアント側が要求”した「http:以下のURI」で切り分ける、
って場合、どれが適切なのか、判断しかねています。


仕様が知らない間にどんどん拡張されているようで、微妙な違い
がありそうで、わけわかんないです。

# 実装でも違ってくるんだろうなぁ。


でび  http://davi.txt-nifty.com/1984/